O que significa "TILT" em um comentário?


9

Estou lendo o Código Limpo, de Robert C. Martin, e a frase TILTinexplicavelmente aparece em alguns exemplos de código. Exemplo (a propósito, é em 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";
        ...
    }
    ...

No contexto, suponho que TILTdesigne um estado inacessível e incluído apenas para satisfazer o compilador (por exemplo, no código acima, TILTaparece no ErrorCode.OKcaso porque não deve haver uma mensagem de erro se o estado estiver OK), mas Não tenho certeza.

Alguém sabe o que TILTsignifica / significa?


11
Possivelmente resposta relacionada em gaming.stackexchange.com
rwong 10/01

9
Provavelmente isso se refere à inclinação do pinball, não à inclinação do poker.
Telastyn

Respostas:


13

Máquinas físicas de pinball possuem sensores que detectam quando algo externo está tentando exercer muita influência no caminho da bola, cutucando ou inclinando a máquina. (Digo muito aqui porque o pinball tem uma longa tradição de uma certa quantidade de movimento ser aceitável, especialmente quando a bola fica pendurada em alguma coisa.) Quando a máquina entra no estado inclinado, qualquer coisa que possa marcar mais pontos para o jogador é desativado até que a bola caia do fundo da mesa. Isso geralmente é acompanhado por uma luz "Tilt" no jogo e às vezes uma campainha de aviso. Pense nisso como o equivalente ao pinball de criar uma exceção.

A metáfora de Martin é tensa porque ErrorCode.OKé, presumivelmente, um válido statuse não algo que tenta forçar a função a fazer algo que não deveria. Em outras palavras, essa entrada não está tentando fazer com que a função retorne a mensagem de erro para um argumento ausente.


O restante disso não responde à sua pergunta, mas pode ser uma razão para você ler o restante do livro com um olhar crítico. Não tenho acesso ao livro para ver se o texto em torno desse exemplo faz algum sinal com a mão, mas, se não, o método faz coisas que não correspondem ao título:

Primeiro, ele não trata a entrada ou o estado presumivelmente inválido como uma condição excepcional e se queixa. Se a documentação do método diz que ele só deve ser chamado quando o objeto statusestá em um estado de erro, é claramente um problema lógico no código de chamada que precisa ser corrigido.

Segundo, ele retorna uma string que é tão válida quanto qualquer outra, mas serve efetivamente como uma constante mágica. Um chamador que deseja saber se invocar o método foi um erro terá que verificar o conteúdo do valor retornado ou repassá-lo alegremente para o ser humano que o lê para decifrar (por exemplo, Operation result:sem informações adicionais).

Um terceiro opcional seria que, se o compilador espera uma cobertura total dos valores enumerados, usar defaultpara capturar os casos não cobertos é muito mais legível do que precisar enumerá-los individualmente ou em um grupo. (O lado do filp é que talvez seja melhor deixar o compilador reclamar para que a adição de um segundo status sem erro force o programador a declarar explicitamente como ele deve ser tratado.)


2
Não tenho minha cópia do Clean Code em mãos, mas você perdeu uma quarta possibilidade: que o método seja apenas uma função auxiliar para gerar uma mensagem de erro legível para algo como um objeto de exceção, o que tornaria perfeitamente razoável como é , sem qualquer "aceno manual" necessário.
Doc Brown

@DocBrown Esse é um argumento justo, embora a próxima coisa a se perguntar seja por que um objeto de exceção se permite ser construído com um status não excepcional.
Blrfl 10/01/19

2
FYI: O sensor de inclinação clássico era um pêndulo de metal que podia girar livremente dentro dos limites de um anel de metal. Bater na máquina aumentaria o balanço do pêndulo e, se ele fizesse contato elétrico com o anel, você perderia a bola. Não bater na máquina por um período de tempo permitiria que o balanço morresse. O pêndulo não estava visível para o jogador: você só precisava aprender por tentativa e erro quanto impacto a máquina toleraria.
Solomon Slow
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.