私はRobert C. MartinのClean Codeを読んでいますが、TILT
というフレーズが一部のコードサンプルに不可解に表示されています。例(ちなみにJavaです):
...
public String errorMessage() {
switch (status) {
case ErrorCode.OK:
// TILT - Should not get here.
return "";
case ErrorCode.UNEXPECTED_ARGUMENT:
return "Unexpected argument";
case ErrorCode.MISSING_ARGUMENT:
return "Missing argument";
...
}
...
コンテキストから、TILT
は到達不能であり、コンパイラーを満たすためにのみ含まれる状態を指定していると推測しています(たとえば、上記のコードでは、TILT
はErrorCode.OK
に表示されます状態がOK
)の場合はエラーメッセージが表示されないはずですが、よくわかりません。
TILT
が/の意味を知っている人はいますか?
物理的なピンボールマシンにはセンサーが内蔵されており、外部の何かがマシンをかじったり傾けたりしてボールの経路に大きな影響を与えようとしていることを検出します。 (私が言う多すぎるここでは、ピンボールにはある程度の動きが許容されるという長い伝統があります。特に、ボールが何かにぶら下がった場合)。マシンが傾斜状態になると、ボールがテーブルの下部から落ちるまで、プレーヤーにスコアを付けることができ、より多くのポイントが無効になります。これには通常、ゲームの「傾斜」ライトが点灯し、警告ブザーが鳴ることもあります。例外を発生させるピンボールと同等と考えてください。
マーティンの比喩はErrorCode.OK
は、おそらく、有効なstatus
であり、関数に強制的に実行してはならないことを強制するものではありません。つまり、その入力は、欠落している引数に対してエラーメッセージを返す関数を取得しようとするものではありません。
残りの部分はあなたの質問に答えませんが、それはあなたに批判的な目で本の残りの部分を読む理由を与えるかもしれません。その例の周囲のテキストが手を振っているかどうかを確認するために本にアクセスすることはできませんが、そうでない場合、メソッドはタイトルに沿っていないことを行います。
1つ目は、無効と思われる入力または状態を例外的な条件として扱い、不満を述べないことです。メソッドのドキュメントに、オブジェクトのstatus
がエラー状態のときにのみ呼び出す必要があると記載されている場合、修正が必要なのは、呼び出しコードの論理的な問題です。
2つ目は、他の文字列と同様に有効ですが、効果的に魔法定数として機能する文字列を返すことです。メソッドの呼び出しが誤りであったかどうかを知りたい呼び出し元は、戻り値の内容を確認するか、それを解読するためにそれを読む人間に簡単に渡す必要があります(例:Operation result:
追加情報なし)。
オプションの3分の1は、コンパイラが列挙値の完全なカバレッジを期待している場合、default
を使用して、カバーされていないケースをキャッチする方が、個別またはグループで列挙する必要があるよりもはるかに読みやすいということです。 (実際には、2番目のエラー以外のステータスを追加すると、プログラマーがその処理方法を明示的に宣言する必要があるため、コンパイラーに文句を言う方がよい場合があります。)