`
regedit_123
  • 浏览: 317952 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

一些编码习惯问题

阅读更多

(45) equals()和hashCode()
若重载Object.equals()方法,同时hashCode()方法也重载,相反亦然。
理由: 因为对应Container类(Hashtable)等.
clone()
如果使用clone() 方法,需封装Cloneable并清楚标明。
例:
class Foo implements Cloneable {
// ...
public Object clone() {
try {
Foo foo = (Foo)super.clone();
// Foo 类的属性的(Clone)
// ...
} catch (CloneNotSupportedException e) {
// 因为implements  Cloneable 所以不能发生
throw new InternalError();
}
}
}
理由: 在shallow copy里不好的Case很多.


(47) 缺省构造方法
如果可以的话,不管什么时候都准备缺省的构造方法(没有自变量的方法).
理由: 在Class.newInstance() 里从类名字符串可以动态创建该类.

(50) 声明与初始化
Local变量与初始值一起声明.
理由: 最小化变量的假定值.

(57) 方法自变量的名字
用来使方法的自变量读取容易.特别在与实例变量重复时,活用this,可以使自变量的读取较为容易.
不好的例子:
void reset(int x_, int y_) {
x = x_;
y = y_;
}
好例子:
void reset(int x, int y) { // 不将自变量名取为x_, y_等
this.x = x;
this.y = y;
}

(58) toString()
toString() 方法如可能要随时封装.
理由1: 用System.out.println(object)可随时打印.
理由2: 单元测试等失败时的显示比较易懂.

(60) String 和基本型的变換
从int到String或其逆变换,如下(他的基本型也同样).
String s = String.valueOf(i);
int i = Integer.parseInt(s);
理由: 虽有其他的写法,但上述方法最易懂最有效.

(32) 避免static 变量
static 变量(类变量)要极力避免.(static final 常数除外)

(33) 喜欢final 吧
如果实例变量在被作成之后绝对不变化的话,积极使用final .还有,如果不变更方法的自变量的参照地的话,当作final 吧.

理由: final ,synchronization 、编译的効率化等容易被适用.从内部类参照自变量时,有必要是final .

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics