分岐の書き方
Discussion
Closed
解決したいこと
皆さんの意見を知りたいです
自分はif文を書くとき、無駄なインデントを嫌って ! と continue; break; return; を多用した文を書きます。
例えばナンプレのプログラムを作るときに、下記のように縦横のラインと3かけ3のブロックで同じ数字がないか走査する関数を作ったとして
private bool horizontalScan ( int x, int y )
private bool verticalScan( int x, int y )
private bool blockScan( int x, int y )
// 同じ数字が見つかればfalseを返す
この場合、同じ数字が見つからなかったら次の処理をを行う操作は
if ( horizontalScan(x, y) ) {
if ( verticalScan(x, y) ) {
if ( blockScan(x, y) ) {
// 次の処理
}
}
}
とするより
if ( !horizontalScan(x, y) ) { continue; // または return; など }
if ( !verticalScan(x, y) ) { continue; // または return; など }
if ( !blockScan(x, y) ) { continue; // または return; など }
// 次の処理
にしたほうがスマートだと感じています。
まぁそもそも
private bool scan ( int x, int y ) {
if ( horizontalScan(x, y) ) {
if ( verticalScan(x, y) ) {
if ( blockScan(x, y) ) {
return true;
}
}
}
return false;
}
public void Func ( int x, int y ) {
if ( scan(x, y) ) {
// 次の処理
}
}
と関数にしてしまえばいい話ですが
上の例は極端な例なので場合によるとは思います。
ただ自分はループ以外であまりインデントを使うと可読性が失われると思っているのでこういう書き方をよくしてます。
皆さんはどう思いますか?
また、入れ子にしたほうが良いと思う意見があれば聞きたいです。勉強中の身なので