众所周知,打从.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图像处理程序。咱们要了解.Net,支持.Net,反射机制和异常处理等本是.Net的先进特性,不要把它们变成性能杀手,为***.Net的阵营制造磨刀送箭,反过来砍向.Net。若是你就是在循环中一次次进行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程序员同仁们说,也是对本身说,专业不是来自有没有证,而是来自咱们的心里。咱们要坚持本身的追求,坚持本身的风格,要有自信,坚定同不专业进行斗争。正价值的软件,必定出自追求专业的开发人员,咱们决不会写出让火车追尾的调度程序的。