Code Review 割とよくやります。今週末はプログラミング3の Code Review の予定です。
* Java の default package は禁止。かならず package 名を付ける。
default package だけ特別扱いされるので、あとで困ることが多い。
* Indent は空白、tab は禁止。うちは4文字 indent 標準。
hgweb でちゃんと表示されない。
* 不要な大域変数、シングルトン
大域変数は基本的に禁止。シングルトンも大域変数と同じなので、相応の理由がないと使わせないです。Unity が大域変数推進なので、ちょっと困ってます。
* 1,2 動きません
前項のが原因なことが多いけど、もう一つインスタンスを作ると動かなくなるコード。拡張性を確保するということですね。
* 局所変数の使い回し
違うことをする変数は違う変数として名前を付ける。変数の寿命を短くするということでもあります。寿命が短ければ、i とか k とかの名前で良い。
* 初期化されない変数
宣言時に値を入れておく。let 文ですね。while 文の外に値を持っていきたい時にできないことがある。while 文の中で return すると良い。
* コピペコード、重複コード
同じことが二度書いてある。あるいは、ちょっとだけ違う。間違いの元だし、保守性も低い。
* コメントで消してあるコード
版管理使っているのだから不要。他に方法があるならコメントに書く。あるいは切り替えられるようにする。
* ダメな名前
spell miss とか、createThread とか「何をするのかわからない」名前ね。メソッド名、クラス名、インスタンス変数名、ファイル名、package 名 いろいろ。
* 不要な型変数、継承
型変数に extends とか付けるのは変だと思う。おそらくは不要。継承するか移譲するかは迷うところだが、Java なら、基本、interface で書く。自明でない型変数(Generic)は、おそらく間違ってる。
* コンストラクタでの複雑な処理
オブジェクトの初期化は複雑な問題。複数のコンストラクタとか欲しくなる。その時にコンストラクタに複雑な処理が書いてあるとはまる。init メソッドとか、Factory とかに直す。
* 例外、エラーの見落とし
そこでエラーしたらどうなるの? とりあえず stack trace? Java のExceptionは遅いし。
* 同期関係の見落とし
Java で syncrhonized method を手で書くのは既に負けなのではないか。並列処理はあらゆる可能性を考えないと。特に初期化時にエラーが出やすい。Semaphor や Syncrhonized queue ですむなら、そうする。
No comments:
Post a Comment