コメントの「TILT」とはどういう意味ですか?


9

私は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到達できない状態であり、コンパイラを満たすためにのみ含まれている状態を指定していると思います(たとえば、上記のコードでは、状態がの場合はエラーメッセージが表示されないためTILTErrorCode.OKケースに表示されますOK)が、よく分かりません。

誰かがTILT/の意味が何であるか知っていますか?



9
これはおそらくポーカーの傾きではなく、ピンボールの傾きを指します。
Telastyn、

回答:


13

物理的なピンボールマシンにはセンサーが内蔵されており、外部の何かがマシンを軽くたたいたり傾けたりしてボールの経路に大きな影響を与えようとしていることを検出します。(ピンボールは、特にボールが何かに引っ掛かったときにある程度の動きを許容できるという長い伝統があるので、ここで言いすぎます。)マシンが傾いた状態になると、プレーヤーのポイントを増やすことができるものは、ボールがテーブルの底から落ちるまで無効になります。これには通常、ゲームの「傾斜」ライトが点灯し、警告ブザーが鳴ることもあります。例外を発生させるピンボールと同等と考えてください。

マーティンの比喩は緊張しています。これErrorCode.OKはおそらく、有効でstatusあり、機能に強制的にしてはならないことを強制するものではないためです。つまり、その入力は、欠落している引数に対してエラーメッセージを返す関数を取得しようとするものではありません。


残りの部分はあなたの質問に答えませんが、それはあなたに批判的な目で本の残りの部分を読む理由を与えるかもしれません。その例の周囲のテキストが手を振っているかどうかを確認するために本にアクセスすることはできませんが、そうでない場合、メソッドはタイトルに沿っていないことを行います。

1つ目は、おそらく無効な入力または状態を例外的な条件として扱い、それについて不満を述べないことです。メソッドのドキュメントに、オブジェクトstatusがエラー状態のときにのみ呼び出す必要があると記載されている場合、修正が必要なのは、呼び出し側コードの論理上の問題です。

2つ目は、他の文字列と同じように有効であるが、効果的に魔法定数として機能する文字列を返すことです。メソッドの呼び出しが誤りであったかどうかを知りたい呼び出し元は、戻り値の内容を確認するか、それを解読するためにそれを読む人に簡単に渡す必要があります(たとえば、Operation result:追加情報なしで)。

オプションの3番目は、列挙値の完全なカバレッジをコンパイラが期待している場合、defaultカバーされていないケースをキャッチするために使用すると、個別にまたはグループで列挙する必要があるよりもはるかに読みやすくなります。(実際には、2番目のエラー以外のステータスを追加すると、プログラマーがその処理方法を明示的に宣言する必要があるため、コンパイラーに文句を言う方がよい場合があります。)


2
私のクリーンコードのコピーは手元にありませんが、4番目の可能性を逃しました。メソッドは、例外オブジェクトのようなものに対して読み取り可能なエラーメッセージを生成するためのヘルパー関数であり、完全に合理的であるということです。 、「手を振る」必要はありません。
Doc Brown

@DocBrownそれは公平な点ですが、次に疑問に思うのは、なぜ例外オブジェクトが例外以外のステータスでそれ自体を構築できるのかという理由です。
Blrfl 2019年

2
参考:古典的な傾斜センサーは、金属リングの範囲内で自由に振ることができる金属振り子でした。マシンをぶつけると振り子のスイングが大きくなり、リングと電気的に接触すると、ボールを失いました。マシンを一定時間ぶつけないでおくと、スイングが落ちてしまいます。振り子はプレーヤーには見えませんでした。マシンをぶつけることの許容量を試行錯誤で学習する必要がありました。
ソロモンスロー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.