December 2024
Beginner to intermediate
164 pages
1h 15m
Japanese
次のようなコードがある。
if (条件)
...何らかのコード...
もしくは、こっちのほうがよいかもしれない。
if (条件)
if (not 他の条件)
...何らかのコード...
読み手はネストした条件で迷子になりがちだ。次のように整頓しよう。
if (not 条件) return if (他の条件) return ...何らかのコード...
このほうが読みやすい。「コードの細部に立ち入る前に、念頭に置くべき事前条件がある」と言っているのだ。
だが、複数のreturnについてはどうだろうか? ルーチンの戻り値を1つにするという「ルール」は、FORTRANの時代に由来する。FORTRANでは、1つのルーチンが複数のエントリーポイントとイグジットポイントを持つことができた。でも、そんなコードをデバッグするのはほぼ不可能だ。どのステートメントが実行されたかもわからない。ガード節があるコードは、事前条件が明白なので分析しやすいのだ。
ガード節は使いすぎないこと。1つのルーチンに7つも8つもガード節があるコードは読みにくい(実際に遭遇したことがある)。その場合は、複雑さを分割するのに細心の注意が必要になる。
整頓後も同じように条件を正しく満たせる場合だけ、ガード節に整頓しよう。
if (条件)
...ルーチンの残りのすべてのコード...
以下のようなコードは整頓したくてもできない。
if (条件)
...何らかのコード...
...さらに別のコード...
たぶん最初の2行はヘルパーメソッドとして抽出できる。そのあとならガード節を整頓できる。だが、常に小さなステップだけで進めよう。
Read now
Unlock full access