プログラムってどう書くのが正解なのか?
プログラミングスクール プログラメイツ
プログラムを書いていると、こうも書けるし、こうだって書ける、という場合に出くわします。
昔は「短いことが絶対正義」みたいな時代があって、三項演算子がもてはやされることもあったのです。
i = i > max ? max : i;
プログラムやったことの無い人だと「なんのこっちゃ?」となる?
これをベタなif文を使って書くと、
if ( i > max ) {
i = max;
}
と、なります。これだとプログラムをあまり知らない人でも勘のいい人はわかるかもしれない。
ifは「もし」ですから、「もし、i>max、なら、iはmaxと等しくなるよ。」ということなので、
iが最大値maxを超えないように補正をしているのですね。別にどちらでもいいと思うんだけど、
短く書くことが正義だと三項演算子を使うことが正義となり、
そういう「べき論」があったりすると先輩に怒られたりする職場もあるかもしれない。
僕はどちらが好きかと言われると考えないで済むif文の方が好きです。
だからと言って提唱する気はありません。三項演算子の方が考えずにできる人もいるでしょう。
それは馴染みによる。
広島にカープファンが多い事や千葉にマリーンズファンが多いのと一緒です。
プログラムで歩んできた道の違い。
iが1だったら文字列sを"January"にして2だったら"February"にして、1でも2でもなかったら"Unknown"にする。
という処理も、switch文を使うと、
switch(i) {
case 1:
s = "January";
break;
case 2:
s = "February";
break;
default:
s = "Unknown";
}
と、なるけど、if文を使えば、
if ( i == 1 ) {
s = "January";
} else if ( i == 2 ) {
s = "February";
} else {
s = "Unknown";
}
こうなります。どちらも同じです。
昔だったら実装方法によって処理速度に格段の差がある場合もあったかもしれないけど、
64bit CPUの時代に大きな差があるかと言われればどうなのか?
僕はどちらが好きかと言われるとif文の方が好きです。
個人的にswitchはbreakを書くのに抵抗があって、全体的には見やすいんですけどね。
自分はif文に馴染んでいるだけだと思うし、別に提唱する気はありません。
どちらでもいいよ。好きな方でやればいい。
無駄だと思うのは仕事自体(この場合はプログラミング)以外の努力が必要になってしまう事だと思うんですよね。
ソースコードの統一性があった方がメンテナンスしやすいよね。
という思想でどちらかを提唱してしまうと大概違う方に書いてはいけないとなってしまいます。
ただ、そういうルールを一度たまたまそこにいる人みんなで決めたとしてもメンバーは変わるし、
プログラミングだって変わる。そのうち意味が無くなってしまう場合も多い。
じゃあ、そうしているからと言ってきちんとメンテナンスしているかというと、
次から次に新しい仕事が来てそれどころではない。
そうこうして昔のシステムはわからなくなってしまい、
メンテナンスをするつもりだったが予算を取って外に丸投げ、となってしまう。とか。
その間、プログラマ同士て行われる叱責やマウンティングによる嫌な思いや時間が一番もったいない。
人間社会だなぁ、、、、、とは思いますが、
本当にもったいない。自分にも若干心当たりが(心が痛い)、、、、
だからと言ってバグの出やすいプログラムを提唱する気はなく、
どう書いてもいいかと言うとそうは思わないのですが、
きちんとプログラムが書けている人ほどあまり気にしていないような気がする。
懐が深いのでどちらを見ても「あ~、これね。」でさっさと対応。
かくありたし。
- 営業時間外10:00〜17:00
詳細
- 日曜日 定休日
- 月曜日 10:00~17:00
- 火曜日 定休日
- 水曜日 定休日
- 木曜日 10:00~17:00
- 金曜日 10:00~17:00
- 土曜日 10:00~17:00
基本情報