検索
下に大小判定のif文があります。結果を返り値で戻しています。
(1)
1| int value1 = 0; 2| int value2 = 9; 3| 4| if(value1 < value2){ 5| return true; 6| }else{ 7| return false; 8| }
実行結果は正しい動作をしますし、実際よく見かけます。
この処理を日本語で書くと、「value1よりvalue2の方が大きいかを判定し、大きければtrueを返し、そうでなければfalseを返す」です。
でもこれ改善点があります。
処理を「value1よりvalue2の方が大きいかどうかを返す」とすれば同じ内容でもっと簡素になります。
(2)
1| int value1 = 0; 2| int value2 = 9; 3| 4| return (value1 < value2);
実行結果も全く変わりません。
(1)の場合は、if文が正しくても return の値を間違えてしまうかもしれません。else側を書き忘れるかもしれません。 しかし(2)の場合は、比較した結果そのものが返されるので間違いようがなければ抜けもありません。
一目で読めて、間違いの要素が減り、マシンコストも下がり(微)ます。
ifでboolを判定してそのbool値を返さなくても、boolはbool。そのまま返しましょ。
もし同じような流れを文字列でやったら・・。moji を return すればいいだけなのにこんなことに・・・。
1| string moji = this.GetXXXXXString(); 2| 3| if("a".Equals(moji){ return "a"; } 4| if("b".Equals(moji){ return "b"; } 5| if("c".Equals(moji){ return "c"; } 6| if("d".Equals(moji){ return "d"; } 7| if("e".Equals(moji){ return "e"; } .| ・ .| ・ .| ・ .| ・ .| ?| }
ちょっと極端でいやらしい例ですね。。m(_ _)m