感觉C#的.NET确实很多地方和Java很像,包括语法,甚至一些API。但是边看边说吧:
1. 虽然一个文件里支持多个namespace和class。但是个人觉得这个功能不是太必要,Java中一个文件一个public class可以让人一眼明了这个文件的功能,强制开发人员组织自己的class。特别是namespace,.NET要求namespace前后加括号来区分一个文件中不同的namespace,觉得完全没必要啊,反而namespace多加的括号在比较长的文件里会影响阅读——因为它多加了一列缩进。
2. namespace可以有alias。感觉这个更没用。用了那么久Java,感觉碰到名字冲突的情况实在少之又少。.NET的这个功能估计在98%的情况下都只会增加程序阅读的难度和混乱。
3. .NET中方法名是习惯大写开头。不是太习惯,个人觉得有点影响阅读——不是一眼就能区分出类和方法。其它的也是一样,比如常量,Java里的常量一般都是大写加下划线的,但是.NET里怎么没看出各种变量之间的区别。感觉.NET好像没有象Java一样强调编码规范,比如Java中对各个地方的命名都有官方的推荐。
4. 看的是传说中的Jeffrey Richter大牛的《Applied Miscrosoft .NET Framework Programming》,感觉到处都有在强调性能,象primitive的autoboxing的性能,inline初始化字段和构造函数对性能的影响;这个和Java的书不太一样,Java的书大多强调标准、规范和Pattern之类的东西,很少有象这书那样细节的强调性能。所以我现在有点理解微软阵营的人对Java的性能的怀疑。但是我认为现在的Enterprise Application第一强调的不会是性能,可维护性、稳定性、可扩展性、标准可能是更重要的。现在很明显的就是Java阵营的人对模式、设计等东西的讨论氛围要比微软阵营的人要好。
觉得微软为了性能在设计C#的时候做了很多妥协,比如struct的概念。很难说这是C#的好处还是短处,struct的引入使人会用过程的思想来考虑问题,而且struct和类还是有很多不同的地方,用的不好反而影响性能。相对来说,struct在实际中又能够带来的性能提升?在多少应用中它是必须的?

评论联播

Your email address will not be published. Required fields are marked *