こんにちは、新人のスーさんです。
本日の研修内容を振り返っていきます。
・より良いコードを書くについて
今まで変数名などそれっぽい名前をただ付けていたので、今回の学習を通じて意識してコードを書いていけたらと思います。
【良い変数名、メソッド名の付け方】
・明確な単語を選ぶ
例えばattack()というメソッドがあるとする。「攻撃」という事は伝わるが、何が攻撃のかが全く伝わらない。明確的な名前を付けるのなら「punch()」「bodyPress()」といったところだろう。
・汎用的な名前を避ける
int value = 1;というコードがあるとして他人がみたと際にこのvalueは何の値だろうと考えてしまう。例えば「物の値段」だとしたら「price」とつけることで、すぐに理解することが出来る。
for(int i = 0; i < year.size; i++){
for(int j = 0; j < year[i].month.size; j++){
for(int k = 0; k < day.size; k++){
if(year[i].month[k] == day[j]){
・・・処理
}
}
}
}
上の様なfor文があるがif文の中のmonthとdayのインデックスが入れ替わってしまっている。このコードだけ見るとエラーを見つけやすいが、長文になってしまった際には見つけにくくなってしまいます。
そういった際にインデックスにも明確的な名前をつけるのが有効です。「year_i」「month_i」「day_i」。または短く「yi」「mi」「di」といった様にすることで間違えを見つけやすくなるのではないだろうか。
・変数名に大切な情報を追加
㎜の長さを表す変数には後ろに_mmをつける。これからトリミングが必要な変数には、前にtrim_をつけるもいいかもしれない。
・誤解されない名前をつける
例えばlimit_valueという限界値なのは分かるが、最低なのか最高なのかが分からないのでつけるとしたらMax_valueだったり、Min_valueといったところだろうか。ほかには「first(以上),last(以下)」や「begin(以上),end(未満)」と言った変数の名付け方がある。
【美しいコードを書く】
美しいコードを書くことにより可読性(すばやく理解しやすい)の良いコードになります。私も下記の事を注意して書いていきたいと思います。
・インデントや空行使い見やすく、統一性のあるコードにする
・同じ処理はメソッドを使い、見やすいコードにする
・ある場所で1,2,3の様に選んでいたコードを他の場所では2,1,3と並べない。意味のある順番にして、常にその順番を守る
【コメントの付け方】
コメントもただ単に書けばいいという訳ではありません。無駄なコメントを書く事によって可読性が悪いコードになったりします。自分の考えを記録する際や読み手の立場になって何が必要なのかを考えてコメント書くのが大切です。
・コードの欠陥にコメントをつける
TODO: あとで修正する場合
FIXME: 既知の不具合がある場合
HACK: きれいではない解決策
XXX: 大きな問題がある場合
・定数にコメントつける
どういった経緯でそういう値になったか、その背景をコメントしておく事が大切です。
【制御フローを読みやすく】
コードを無理に一行にまとめずに、読みやすさを意識してコードを書く事が大切です。
例:
return max <= value ? (total / length) * 100 : (ave * length) ;
こういった三項演算子あるとします。ぱっと見何をやってるのか考えてしまいます。
これをif/else文を使うことによって可読性の良いコードにすることが出来ます。
if(max <= value){
return (total / length) * 100;
}else{
return (ave * length)
}
どうでしょうか、上と下のコードでは下の方がやっていることを理解しやすいのではないでしょうか。
・do/whileよりもwhileを使いべきな理由
例:
以下の処理はどうなるでしょうか?
do{
continue;
}while(false);
無限ループなのか、1回だけなのか考えてしまうだろう。答えは1回だけ実行されます。
こういったこともありエラーや混乱の恐れがあるのでdo-while文を使う場合は注意です。
【その他の意識したい点】
・関数から早く値を返す
・ネスト(入れ子構造)を浅くする、削除する。
・巨大な式を分割することで理解しやすくする。
・不要な(役に立たない)変数を削除する。
・変数のスコープを縮める
上記の事を意識することでより良いコードになることは間違いないと思います。
この学習を通じて変数の付け方一つにしても大切なんだと感じさせられました。
今後は意識してコーディングを行っていきたいと思います。