![見出し画像](https://assets.st-note.com/production/uploads/images/75348033/rectangle_large_type_2_3ce3a3352fc060491e321dbee9470165.png?width=1200)
【開発哲学3_15】〜『CODE COMPLETE第2版 第15章(上巻)』の感想〜条件文の使用
感想
elseとdefaultの扱いは、すごく大事✨
バリデーションって言葉を使いたがる人で、
elseとdefaultに異常処理を書かずに、メインの処理を書いてしまう人が結構多かった。
バリデーション=妥当性確認
なのに、様々な場合分けを考慮できていないから、
思いついた場合だけをelseとdefault以外で場合分けして、
正常処理を書いて、
elseとdefaultでも正常処理を実行させたら、
期待しない結果になるしかないに決まっているのに、、、。
言われれば当たり前なんだけど、
条件文 = 特定の場合以外は実行を制御する文
だから、正常以外の場合に同じ正常処理をさせたら、
何も制御できていないのと変わらない。
と何年経っても、結構、ミスる人多いだよねえ。
頭だけでコードを書いて、肌感覚で身につけてないから。
そんな人ほど、
バックアップを取っていない本番系とかで、elseとdefaultの考慮をしっかりやっていないから、えらい事になってた。
(例)
条件以外の時に、データを追加して、DBを更新。
↓
バックアップ取っていないから、何回か実行されちゃって、データを元に戻せない。
とかね。
そんなアホな笑
と思うかもしれないけど、誰でも一回は通って、涙目になる途だから、気を付けてね。
詳細
見出しとしては、
if文
case文
まとめ
て感じ。
癖なのか、
if (a = b){
正常処理
} else {
}
みたいな感じで、何も処理しないのに、空白行でelse文をわざわざ書く人や、
aがbでない時に正常処理をさせる場合に、
読めばわかるで、
if(a = b){
異常処理
} else {
正常処理
}
て書く人もいたなあ。
そんな人に限って、
空白行の人だと、
「実は、何かの処理を入れてたのに誰かが間違って消したんじゃないか?」と、
設計図とか過去の履歴を確認したり、
それまでの数日間の改修を全て無駄にしてしまうのに、リポジトリを最初まで戻して確認した結果、最初から何も書いてなかったと判明したり
で調査に余計な時間がかかってた。
異常処理を先に書く人の場合、
別の人が改修作業に入って、「先に来ているから正常処理」と勘違いして、うまく動かないと涙目になってたな。、
読みやすさを普段から意識すると、
if (a = b){
正常処理
}
だし、
if(a != b){
正常処理
} else {
異常処理
}
て書く。
余談
とある大手ベンダーさんでは、
//もしaとbが同じであれば
if (a = b){
//正常処理
正常処理
} else {
//何もしない
}
と何も処理をしないところも含めて、全てのコードに1行ずつ
//コメント
で、コメントを入れさせてた。
おそらく、
レビューする人が何をしているか一目でわかるように、全てのコードにコメントを入れさせる目的なんだろうけど、思いつくだけでもデメリットが2つ。
デメリット
見れば何もしていないと一目でわかるコードにまで //何もしない と書くのは、却って読みにくい。
コードを書いた上に、全てのコード行にコメントを書くのは、(特に日本語の場合はさらに漢字変換などで時間がかかる)単純に考えても、作業時間が倍になる。
上の例では、たった数行だけど、数百行〜数万行のコード全てにコメント行が入っていたら、果たして読みやすいか?って話。
例えば、
さっきのコードを数回繋いだだけだけど、
//もしaとbが同じであれば
if (a = b){
//正常処理
正常処理
} else {
//何もしない
}
//もしaとbが同じであれば
if (a = b){
//正常処理
正常処理
} else {
//何もしない
}
//もしaとbが同じであれば
if (a = b){
//正常処理
正常処理
} else {
//何もしない
}
//もしaとbが同じであれば
if (a = b){
//正常処理
正常処理
} else {
//何もしない
}
//もしaとbが同じであれば
if (a = b){
//正常処理
正常処理
} else {
//何もしない
}
//もしaとbが同じであれば
if (a = b){
//正常処理
正常処理
} else {
//何もしない
}
//もしaとbが同じであれば
if (a = b){
//正常処理
正常処理
} else {
//何もしない
}
と、不要なコメントと空白行を削った下のコード
if (a = b){
正常処理
}
if (a = b){
正常処理
}
if (a = b){
正常処理
}
if (a = b){
正常処理
}
if (a = b){
正常処理
}
if (a = b){
正常処理
}
if (a = b){
正常処理
}
と比べたら、前者は、読みにくくて仕方ないんじゃないかな?
まとめ
読みやすさ = 何が読みにくいを知ること💃
正常処理が正しくできているかの検証以上に、
異常処理の条件をきちんと洗い出せているか
の考察も重要🕺