“ 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指定一个无法访问的状态,并且仅包含该状态以满足编译器的要求(例如,在上面的代码中,TILT出现这种ErrorCode.OK情况是因为如果状态为OK,则不会出现错误消息),但是我不确定。

有人知道TILT代表/意味着什么吗?



9
这可能是指弹球倾斜而不是扑克倾斜。
Telastyn

Answers:


13

物理弹球机中装有传感器,这些传感器可以检测外部物体何时试图通过轻推或倾斜机器而对球的路径产生太大的影响。(我在这里说太多了,因为弹子球的悠久传统是可以接受一定程度的运动,尤其是当球挂在某物上时。)当机器进入倾斜状态时,可以为球员赢得更多分的任何事情都是直到球从桌子底部掉落为止。通常在游戏中伴随着“倾斜”灯,有时还伴随着警告蜂鸣器。将其视为引发例外的弹球。

Martin的比喻很紧张,因为ErrorCode.OK它大概是有效的,status而不是试图强迫函数执行不应做的事情的。换句话说,该输入并不是要让函数返回缺少参数的错误消息。


其余的这些并不能回答您的问题,但是它可能使您有理由以挑剔的眼光阅读本书的其余部分。我无权访问该书,以查看该示例周围的文字是否有任何挥舞之手,但如果没有,该方法会执行不符合标题的操作:

首先,它不会将可能无效的输入或状态视为异常情况,并对此进行投诉。如果方法的文档说仅应在对象status处于错误状态时才调用它,那么显然这是调用代码中的逻辑问题,需要纠正。

其次,它返回的字符串与其他字符串一样有效,但实际上可以用作魔术常数。想要知道调用该方法是否错误的调用者必须检查返回值的内容,或者将其巧妙地传递给读取它的人以进行解密(例如,Operation result:没有其他信息)。

可选的第三种是,如果编译器希望对枚举值进行完全覆盖,那么default与捕获单个或成组枚举相比,用于捕获未覆盖的情况的可读性要高得多。(错误的一面是,最好让编译器抱怨,以便添加第二个非错误状态将迫使程序员明确声明应如何处理。)


2
我没有手头的Clean Code副本,但是您错过了第四个可能性:该方法只是一个辅助函数,用于为诸如异常对象之类的东西生成可读的错误消息,这将使其完全合理,无需任何“挥手”。
布朗

@DocBrown这是一个公平的观点,尽管接下来要问的是为什么为什么异常对象允许以非异常状态构造自身。
Blrfl

2
仅供参考:经典的倾斜传感器是金属摆锤,它可以在金属环的范围内自由摆动。颠簸机器会增加摆锤的摆动,如果它与环发生电气接触,则您会丢失该球。一段时间碰撞机器将使摆动消失。摆锤对玩家不可见:您只需要通过反复试验来了解机器可以承受多大的撞击。
所罗门慢
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.