如何评估天元建设集团有限公司的企业网站开发水平?
摘要:企业网站开发介绍,天元建设集团有限公司怎么样,重庆勘察设计协会网站,建设企业银行登录1、无论是类、方法、字段、变量,尽可能的限制他们的作用范围,可以避免出现不必要的错误&a
企业网站开发介绍,天元建设集团有限公司怎么样,重庆勘察设计协会网站,建设企业银行登录1、无论是类、方法、字段、变量#xff0c;尽可能的限制他们的作用范围#xff0c;可以避免出现不必要的错误#xff1b;同时虚拟机也能有更大的优化空间。
2、错误越早发现越好#xff0c;编译时发生错误比在运行时发生错误好。而且编译时错误能更好的定位问题所在。
这…1、无论是类、方法、字段、变量尽可能的限制他们的作用范围可以避免出现不必要的错误同时虚拟机也能有更大的优化空间。
2、错误越早发现越好编译时发生错误比在运行时发生错误好。而且编译时错误能更好的定位问题所在。
这两条建议来源于阅读《Effective Java》后的总结。
书中第15条使类和成员的可访问性最小化以及第16条要在公有类中使用访问方法而非公有域大部分使用Spring开发的人都会这么去做但是我觉得大部分的初级开发甚至是中级开发者并不知道为什么要这么做只不过是在依葫芦画瓢。
一个设计良好的类除了要满足高内聚、低耦合之外应当还要具备良好的封装性。以常用的ArrayList举例在idea中进行编码时输入list.之后idea就会列出add、set等方法但是不会出现grow等实现细节所需的方法即使自己拼出来方法名也无法通过编译。 试想一下倘若一个类只提供两个客户端所需要的方法然后有很多实现细节所需的方法但是这些方法并没有封装。后果就是不熟悉这个类的人需要去看所有方法的注释或者源码这对使用该类的开发人员是一种极其不好的体验而且还可能因为疏忽调用错方法导致程序没有按照开发者所预想的逻辑进行但是这个错误无法在编译时发现如果测试用例正好没覆盖到此处那么这个错误可能在某一天对系统产生重大的影响。开发者所能做的就是尽可能的把错误扼杀在摇篮。
至于第十六条估计没有Java开发者不遵守在编写实体类时字段都为private然后通过getter、setter方法去获取与修改。初学Java时觉得这种做法跟脱裤子放屁一样多此一举。 现在才明白字段field权限为public那将意味着这个类失去了对该字段的控制。试想如果field为int类型但是类的设计者希望field的大小只在1-10之间那设计者只能在每次使用field时进行校验因为要把使用者当傻子不能指望他能按照预期进行输入如果field是在多处使用代码看上去很臃肿并且容易在某个地方遗漏特别是其他开发者进行维护时。field权限为private就没这么多事了因为在setter时可以直接校验。 第40条坚持使用Override注解 Override注解都知道是覆盖超类方法用的但是不加其实也能覆盖程序不会出现任何问题那么他的意义在哪呢请看以下代码
public class Bigram {private final char first;private final char second;public Bigram(char first, char second){this.first first;this.second second;}public boolean equals(Bigram b){return b.first first b.second second;}public int hashCode(){return 31 * first second;}public static void main(String[] args) {SetBigram s new HashSet();for (int i 0; i 10; i) {for (char ch a; ch z; ch) {s.add(new Bigram(ch,ch));}}System.out.println(s.size());}
}代码意图很明显往一个Set中添加a,a、b,b…z,z的实例对象由于Set会去重所以无论循环多少次按理说打印结果都是26我阅读此处时也觉得是26然而结果是260。 原因就是我们以为Bigram类覆盖了Object的equals但其实是重载了因为Object的equals方法形参是Object而Bigram的形参是Bigram。 这种没有任何异常的逻辑错误如果系统有一定的规模排查的时候可以说是有不小难度的。如果在equals方法上加上Override注解那么在编译时就能够提醒此处有问题无法编译通过能够很好的避免此类bug。 第49条检查参数的有效性 很多方法或者构造器对于传递给它们的参数值都会有某些限制。最常见的限制有索引必须是非负数对象引用不能为null等。这些限制应当在方法体开头处检查尽早的发现错误。
