.NET程序员,我们应该更专业点

全面解析.NET应用程序开发 本文还有配套的精品资源,点击获取 简介:本文档详细介绍了基于微软.NET框架的应用程序开发,包含从编程基础到数据库交互等多个方面的实际文件和资源。涵盖了源码阅读、自定义控件、业务逻辑层、Web前端、通用组件以及SQL Server数据访问层等内容,旨在帮助开发者理解和学习.NET应用构建的全貌。通过这些资源,开发者可以提升.NET编程技能,并深入了解如何创建完整的.NET应... 阅读详情

众所周知,打从.Net诞生那一天起,业界就弥漫着一股贬低.Net的空气。许多公司排斥.Net,因为.Net低效的名声,加之怕被微软绑架的担心。许多C++程序员有偏见,看不起.Net程序员,认为那些人比较菜,才学入门级的语言。Java程序员对.Net也不待见,我们会Spring,Hibernate等一大堆框架,你们除了用类库还会什么?

这些看法有些确实是偏见,我们大可以有力地回击。有些看法却也不无道理,跨平台性.Net确实不如Java,主要是没有官方的多平台支持;论运行效率也确实与Native C++有天生的差距。然而很大一部分责任,要归疚我们.Net程序员。

其实每个开发平台,每种编程语言都有优势和劣势。做为.Net程序员,我们需要更专业一点,熟悉.Net的长短之处,最大化的利用和回避。

我们要熟悉常用的设计模式,懂得DRY、SHY等编程原则,专业的运用Framework,写专业的代码。工作几年了,不要让人一看就是菜鸟。

要有专业的代码风格,使用专业的命名。不要写几百行的方法,几千几万行的类,里面动辄十几层的花括号。我所见过的这种代码,一半以上都是水分。

要知道要尽可能少地创建新对象,尽可能地减少IO和反射操作,尤其避免在循环中使用。

要知道对客户输入作验证,要会正则表达式,要懂得如何尽可能避免类型转换,要会高效的类型转换方式。

要明白一些基本Framework常识,比如List、Dictionary等集合类不是线程安全的,知道如何保证线程安全。

不要再写Request.QueryString[id].ToString()和ConfigurationManager.AppSettings[key].ToString()这样的可笑代码了(我实在纳闷为什么一多半人都这么写),不要到处画蛇添足的Trim和Try…Catch了。当看到这种代码,连自己为身为.Net程序员群体一员感到羞惭。也就难怪其它语言的程序员看不起我们,以菜鸟的眼光看待我们了(参考 《做Java开发这一年》),因为我们就是如此。

其实,本来.Net虽然内存消耗大点,但运行速度总体并不比C++差多少,这点许多人已经实验证明了。可以参考C#的性能到底有多差、编写高效的C#图像处理程序。不过如果你就是在循环中一次次做IO操作,硬要int.Parse+try catch来进行类型转换,甚至都懒得用StringBuilder的话,我们真该好好问问,C#不可忍受之慢——谁是罪魁祸首?

我不清楚造成.Net程序员群体这种现状的原因。我完全是自学入门的,当然开始时写了许多烂代码,现在可能也在写,但至少自己在不断提高。而很多的.Net程序员,不上论坛,不看博客,顶多案头放着一本一千多页的《.Net高级编程》(其实是低级编程,内容MSDN上全有)备查。

我估计,不止是.Net,多数C++/Java程序员也不是一天到晚学习和提高,大家需要多样的生活。但至少,在工作中可以不断提高吧,工作几年了犯初学者的错误实在是说不过去,只能归结为态度问题。可能是.Net比其他语言平台都容易入门得多,许多生性浮躁的初学者选择了它。甚至在有些人眼里,编程就是来混饭的,只要运行出结果,其他不关我的事。平庸的程序员只会产生消极的生产力(为什么新人不会编程)。当我每次为维护项目,花一整天甚至更久解决一个Bug时,我真想把开发者再抓回来,让他们自己dogfood。

在此的同仁们,你们是否曾有过类似的感受呢?相信大家既然能来博客园,能看到这篇文章,应该都是有志于不断学习提高而来。大家是程序员中最努力的群体,至少从代码风格上看,也跟平日接触的.Net程序员不是一个档次。不过现实中,不少人既追求专业,而对一些不太专业的用法习以为常。

比如今天看到一篇随笔 如何写健壮的代码,道法同学先展示一段代码,然后提出了许多改进思路,这种追求每个细节的做法很值得学习,然而改进后的代码仍有几个问题:

如果要最严格的规范命名的话,parsedArgs不是改为_isArgsParsed,而是标准的Camel方式:argsParsed;还有只比较字符串相等与否,应该用Equals而不是CompareTo方法;最不应该的是出现了goto语句,这是不得已情况才用的。最后抛出异常时,应该抛一个具体的异常,在任何情况下都不应该抛出Exception异常。

在此,我向大家强烈推荐,如果没有读过,一定要读读《.NET设计规范》这本书,如果你之前一本书也没看过,那也应该先看看它。它是设计.NET Framework的大师们的智慧结晶,作为开发高质量.Net程序的规范指南,还有什么它更权威的呢?看过这本书,几乎可以避免所有常见的规范性问题,包括在上段提出的那几条。

园子里有好几个人写的代码是我们的榜样,像老赵,装配脑袋等人。还有一个人不得不提下,就是吉日嘎啦。作为一个半路学.Net的老程序员,十年来,不断思考并重构权限管理系统代码,大家可以看看DotNet.Common 命名空间的来源说明,真实地说明了统一规范的好处。虽然大家可能因为他的商业行为不喜欢他,可谁也不能否认,至少在专业及对专业的追求方面,吉日值得敬佩。

最后,我想对园子的.Net程序员同仁们说,也是对自己说,专业不是来自有没有证,而是来自我们的内心。我们要坚持自己的追求,坚持自己的风格,要有自信,坚决同不专业进行斗争。正价值的软件,一定出自追求专业的开发人员,我们决不会写出让火车追尾的调度程序的。

原文出自:博客园

.net牛人知道(.net程序员成长必知) .net牛人必须知道的知识点.net程序员成长必知 立即下载

相关推荐

Maven证书信任危机:PKIX path building failed的全面解析与实战修复

本文全面解析了Maven构建中常见的`PKIX path building failed`证书验证错误。该错误通常在使用特定镜像仓库或自建仓库时,因SSL/TLS证书不被JDK默认信任而触发。文章深入剖析了错误根源,对比了临时忽略检查与永久导入证书等不同修复方案的安全性与适用场景,并推荐通过`keytool`将证书导入JDK信任库的根治方法,以保障构建安全与稳定。

zzz56的博客 506

.net应用程序和工具

由于新公司对NET 失去了兴趣,Ximian的创始人Miguel de Icaza创办了Xamarin 公司,并将值得关注的.NET 部分带到了他的新公司,开始创建 Android和 ioS可用的.NET项目。添加对程序集的一个引用,以便在自己的代码中使用公共类型和方法的时候,仍可以这样使用程序集(一些程序集必须这样使用)。如果比较.NET Core与.NET 4.8的构建结果,会发现对于.NET Core,生成了一个包含IL代码的DLL,而对于.NET 4.8,生成一个包含IL代码的EXE。

DAJUNGiselle的博客 1565

MATLAB2022b安装

图文并茂,手把手教会你怎么安装MATLAB2022b

1万+

这位优秀的.NET开发者是怎样炼成的?

本文来自DotNET技术圈作者:邹溪源一,社区的小圈子今年3月的一次技术交流活动上,那是我们.NET技术社区第一次组织线下活动,由于没什么经验,所以活动组织得比较仓促,内...

dotNET跨平台 472

历年北京理工大学复试专业综合题

。

A place to record sth. 2万+

Yolov5s/Yolov8s网络结构图

yolov8、yolov5网络结构图

Goodness2020的博客 9925

.NET基础

.NET是一个微软搭造的开发者平台,主要包括:1.支持(面向)该平台的编程语言(如C#、Visual Basic、C++/CLI、F#、IronPython、IronRuby...)2.用于该平台下开发人员的技术框架体系(.NET Framework、.NET Core、Mono、UWP等)定义了通用类型系统,庞大的CTS体系用于支撑.NET下的语言运行时的环境:CLRNET体系技术的框架库FCL3.用于支持开发人员开发的软件工具(即SDK,如VS2017、VS Code等)

m0_57771536的博客 1051

Android中的Service:Binder,Messenger,AIDL(2)

前言前面一篇博文介绍了关于Service的一些基本知识,包括service是什么,怎么创建一个service,创建了一个service之后如何启动它等等。在这一篇博文里有一些需要前一篇铺垫的东西,建议没有看过前一篇博文的同学先去看一下前一篇: Android中的Service:默默的奉献者 (1) 。但是在前一篇博文中也有一些遗漏的东西——主要是关于bindService()这一块的具体细节。由于这

lypeer的专栏 5万+

什么是.NET吗?学习.NET程序员现在就业怎么样吗?

但是,随着技术的不断发展和市场的不断变化,程序员们在学校里老师布置的作业我们要写完,多做项目要有创新项目的思维,坚持,自律,有爱问什么,网上找资料等。更新自己的技能和能力,提高自身的综合素质,并拓宽就业渠道,才能更好地应对就业压力,找到自己满意的工作,为自己将来美好的生活努力,实现自己人生理想。因此,缺乏这些新技能的程序员将难以满足市场的需求。.NET也可以如下来定义:.NET是微软的新一代技术平台,为敏捷商务构建互联互通的应用系统,这些系统是基于标准的,联通的,适应变化的,稳定的和高性能的。

weixin_73579622的博客 783

【Claude Code 源码解析教程】第4章:QueryEngine 查询引擎

本章深入解析 Claude Code 的核心引擎——QueryEngine,它是整个对话系统的"心脏",负责管理会话状态、消息处理流程和多轮对话支持。

rengang66的博客 269

WPF高级 | WPF 与数据库交互:连接、查询与数据更新

WPF高级 | WPF 与数据库交互:连接、查询与数据更新,在现代应用程序开发中,数据的存储和管理至关重要。Windows Presentation Foundation(WPF)作为一款强大的图形界面开发框架,常常需要与数据库进行交互,以实现数据的持久化存储、读取和更新。本文将深入探讨 WPF 与数据库交互的各个方面,包括数据库连接的建立、数据查询的执行以及数据更新的操作,并通过丰富的代码示例和详细的概念解释,帮助读者掌握这一关键技术。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 6万+

NET程序员,我们应该更专业点

.2011-07-28 09:50 | 15372次阅读 | 来源:博客园 【已有128条评论】发表评论  关键词:程序员,.NET | 作者:小城故事 | 收藏这篇资讯  众所周知,打从.Net诞生那一天起,业界就弥漫着一股贬低.Net的空气。许多公司排斥.Net,

fengchao1000的专栏 514

Challenge 4 - OSCP A

在c盘下发现一个windows.old,在里面可以找到SYSTEM和SAM文件,下载到本地,利用samdump2解密发现没解出来,再来试试pwdump.py(https://github.com/CiscoCXSecurity/creddump7)得到压缩包密码bludecode,解压之后发现一个比较特殊的文件configuration.php,里面有两个类似密码的字符串。登录之后在/opt/backups/下发现几个特殊文件,其中sitebackup3.zip是个正常的压缩包。但是这个压缩包是有密码的。

羽的博客 5784

.NET程序员,我们应该更专业点

众所周知,打从.Net诞生那一天起,业界就弥漫着一股贬低.Net的空气。许多公司排斥.Net,因为.Net低效的名声,加之怕被微软绑架的担心。许多C++程序员有偏见,看不起.Net程序员,认为那些人比较菜,才学入门级的语言。   众所周知,打从.Net诞生那一天起,业界就弥漫着一股贬低.Net的空气。许多公司排斥.Net,因为.Net低效的名声,加之怕被微软绑架的担心。许多C++程序员有...

weixin_30593261的博客 101

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 设计模式六大原则总结
下一篇: 测量运行时间StopWatch类
Waldenz
博客等级 码龄17年 219粉丝 229原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值