#コードの種類
コードには次の種類が存在する。
- Specification(以下Specコード):仕様中心
- Maintenance(以下Maintコード):保守中心
- Perfomance(以下Perfコード):性能中心
- Enviroment(以下Envコード):環境中心
- Legacy(以下Legaコード):既存中心
コードを作成する時に作りたい内容をそのまま記述して終わりであれば、Developerの悩みは半分になるだろう。しかし実際には色々な理由でコードが変わる。
Specコード:仕様中心
要求される仕様通り変換されたコードを意味する。
spec.java
// Spec: valAとvarBが一致しない
// Bad: specの表現と一致しない。
if (valA == varB) {
// 一致する場合の処理
} else {
// 一致しない場合の処理
}
// Good: specの表現と一致する。
if (valA != varB) {
// 一致しない場合の処理
} else {
// 一致する場合の処理
}
Maintコード:保守中心
処理内容の変更が発生する場合、簡単に改修できるようにするコードを意味する。
maint.java
// Maint: typeの値が「a」→「b」に変わった。
// Bad: 似てる値では分かり難い。ミスする可能性が高い。
if (type == "a") {
// process
}
if (type == "a" && kind == "a") {
// process
}
// Good: 同じ値でも各意味が分かりやすい。
public static final String TYPE_INIT = “a”;
public static final String KIND_MESSAGE = “a”;
if (type == TYPE_INIT) {
// process
}
if (type == TYPE_INIT && kind == KIND_MESSAGE) {
// process
}
Perfコード:性能中心
処理内容は変わらないが、性能問題(速さ、容量)の理由で適用するコードを意味する。
maint.java
// Perf: メモリ不足による性能が落ちている。メモリ増設はできない場合
// Bad
String s = "a";
for(int index = 0; index < 100000000; index++){
s += "b";
}
// Good
StringBuilder sb = new StringBuilder("a");
for(int index = 0; index < 100000000; index++){
sb.append("b");
}
String s = sb.toString();
Envコード:環境中心
言語の文法又はライブラリVersion内容の差による固有のコードを意味する。
Legaコード:既存中心
既存コード(機能、作成ルール)を理解してできる限り影響を与えないようにするコードを意味する。
#コード作成ルール