場末

プログラミング素人の雑記

プログラミング作法02

式と文編

- インデントしろよ

綺麗にインデントしなくても確かに動くけど構造が把握しにくいよ
構造が把握できればエラーも減るしメンテしやすいよ


- 自然な式を使ってね

式は音読するつもりで書いてね
if(!(age > adult) || !(age =< teen))...
わざわざ否定する必要ないよね、関係演算子ひっくり返せば良いよね


- 括弧を使って曖昧さを回避しようね

括弧を使って意図を明確にしてね
いや別にいらないっちゃいらないしなくても動くけど害があるわけじゃないし
関係演算子(<とか>とか==とか)は論理演算子(&&とか||とか)より優先度が高いから変なとこでミスる可能性減るよ
leap_yaer = y % 4 == 0 && y % 100 != 0 || y % 400 ==0;
これは括弧を使わなくても問題ないけど
leap_yaer = ((y%4) == 0 && (y%100) != 0) || ((y%400) == 0);
の方がまとまってるし優先度の高い式が分かりやすいね
空白を詰めると見やすいこともあるよ


- 複雑な式は分割してね

便利な演算子とか構文がいっぱいあるからまとめて書けちゃうよね。わかる。
でも分轄した方が分かりやすいよ
演算子で比較しまくるぐらいならifとかwhile使ってスッキリ書こうね


- 明快に書いてね

頭捻って考えつかないような処理を短いコードでやってんね。すごい。
でもそれ他の人も見るんだけど大丈夫なん?
『明快さ = 短さ』ではないよ
明快なコードでも長くなることはあるから自信持とうね


- 副作用に気をつけてね

花粉症じゃないから知らないけど花粉症の薬って飲むと眠くなるらしいね、なんでか知らんけど。
便利な機能には副作用もあるよ、例としてインクリメント・デクリメントとか。
よく使うよね。
array[ i++ ] = i ;
i=3だったら配列に代入される数字はなんだろうね?
とにかく一定でない結果を返す可能性が高いよ
インクリメント・デクリメントは値を返すのと書き換えをするからエラーの元になりやすいよ