最近由于工作需要支援了公司的C#项目组。第一次体验这个JAVA的老对手,以下是一些心得。
【语法】
总体非常类似,属性和索引器 应当说改得还不错,实际也只是在编译器上做了自动生成方法的手脚,小改动。
【注解与特性】
在JAVA世界里,注解在框架的易用性上发挥了巨大作用,实际C#也有类似的东西“特性”,但除了NUNIT小试牛刀,其他用得极少。个人感觉非常可惜啊。
【IDE工具】
基本差不多,不能看类层次图,不能自动加using(不会是我不会用吧)。好在常用类没有JAVA那么多,引入不需要具体类名,包名就够了,总数惊奇的少。
【常用类库】
特别要说下集合类方面,C#里可选择的比JAVA少多了,无Set。泛型类与非泛型类不重叠,反映出C#发展中与JAVA升级思想的差异。其他,如IO等类库相比JAVA也是少得惊人。好坏先不说,学习曲线平坦了非常多。
【分层模式】
这个区别可太大了,但凡搞过SSH的JAVA程序员基本对三层结构多少都能说出个一二三来。而做C#感觉未必了。虽然C#也有NHIBERNATE等ORM框架,但实际开发项目时,相当多的项目组还是采用(比如笔者这个)微软最经典的表模式开发。动辄控件加绑定,对JAVA程序员是不是“一夜回到解放前”。(玩笑了)
JAVA开发天生的解耦性,应当说是C#很难企及的。但是换个角度,强耦合避免了比如JAVA里比较常见的DTO满天飞等问题,可谓有弊有利。
【代码量】
介于传统习惯及ORM工具的羸弱,C#的开发项目组普遍大量使用各种各样的代码生成器,无疑这样代码量要多很多,其实重复代码比例很大。这一点,无疑JAVA完胜。
【总结】
虽然,C#貌似有些“原始”,但是也不能一棍打死,说他落后。毕竟存在就是合理,应当看到较原生态的开发方式,往往性能问题少。再依靠大量代码生成工具,一定程度上弥补了开发效率上的不足。毕竟微软现在还是老大么。
最最重要的是C#学习曲线比JAVA平坦了很多,非常有利于小企业“大干快上”。
最后,笔者参加项目数据结构及应用都较简单,对C#的一些高级应用还未感受,观点难免偏颇,望见谅!