Kernighan's law
expressãoprogramação
'Depurar é duas vezes mais difícil do que escrever o código. Portanto, se você escrever o código da forma mais engenhosa possível, você é, por definição, não inteligente o bastante para depurá-lo.'
Brian Kernighan a escreveu com P. J. Plauger em The Elements of Programming Style (1974), e ela é desde então o veredito permanente sobre a esperteza. A lei não proíbe sofisticação; ela a precifica, na capacidade de depuração do seu eu-futuro às 3 da manhã. A pergunta mais útil do code review é a lei de Kernighan na forma interrogativa: vamos entender isto daqui a seis meses?
Depurar é duas vezes mais difícil que escrever o código, então, se você escrever o código do jeito mais engenhoso possível, você é, por definição, inteligente de menos para depurá-lo. A formulação de Brian Kernighan é um aviso dirigido especificamente a programadores capazes, já que os incapazes nunca iriam escrever a versão engenhosa.
O raciocínio é sobre folga cognitiva, e não sobre habilidade. Escrevendo código, você segura a intenção inteira na cabeça e cada linha faz sentido conforme sai. Depurando, você chega sem esse contexto, muitas vezes meses depois e possivelmente não como a mesma pessoa, e precisa reconstruir a intenção a partir do artefato. Código engenhoso é exatamente aquele cuja intenção é mais difícil de reconstruir.
A consequência prática é preferir soluções entediantes, o que é genuinamente difícil de sustentar, porque código engenhoso é mais satisfatório de escrever e parece mais impressionante na revisão. O reenquadramento que ajuda é que você não escreve para o compilador nem para o leitor de hoje, escreve para quem vai depurar isso às três da manhã durante um incidente, e a inteligência disponível daquela pessoa naquele momento é bem menor que a sua agora.