Olá Habr!
Trago à sua atenção uma tradução do artigo "
Too Clean? ", De Robert C. Martin (tio Bob).

Acabei de assistir uma palestra de
Sarah May : um
código viável . Isso foi muito bom. Concordo plenamente com os principais pontos de seu discurso. Por outro lado, o tópico de seu discurso era que eu não havia considerado adequadamente antes.
Mas antes que eu chegue a isso, eu tenho nitpicking. Em algum momento de seu discurso, ela criticou o movimento dos mestres, porque é muito focado no comportamento individual, e não no de equipe. Infelizmente, essa é uma característica errada do movimento artesanal, que sempre foi focado na criação de equipes profissionais e éticas.
Nesse caso, a ideia de que os sistemas de software devem ser "habitáveis" é uma visão interessante. De acordo com maio, para ser “habitável”, a organização do sistema de software deve estar entre os extremos da confusão confusa e assustadora das lojas de códigos e a pureza anti-séptica vista nas páginas das revistas de interior e nas brochuras de vendas da casa.
Não é isso que eu considerei ou expressei antes; embora fosse sempre o que eu praticava timidamente.
O sistema pode estar muito limpo? É possível focar tanto na limpeza que praticamente ninguém pode trabalhar no sistema?
Aqui está uma foto do meu escritório hoje. O que você vê?

É relativamente limpo. Esta é uma organização clara. Você pode ver meu local de trabalho, com um laptop e duas telas no centro. Você também pode ver minha estação de simulação de voo à direita. Existem cestas, caixas e todos os atributos organizacionais habituais.
Mas também há um pouco de confusão. Ao lado da impressora, localizada no canto esquerdo, está o BUG-A-SALT, pronto para lidar com a mosca invasora. À direita, no topo da Tardis, olhando pela tela da direita, há um rolo de papel higiênico. Caso derrame meu café ou queira espirrar. Você pode encontrar o spinner? Veja, um monte de ferramentas de desenho à esquerda? E todos esses adesivos, fotos e ... E o mundo dentro de todos esses buracos no armário?
A limpeza e organização do escritório o tornam utilizável. Eu sei onde estão todas as coisas. E eu sei como acessá-los. Elementos não relacionados não interferem entre si. Não há dependências desnecessárias.
Uma pequena bagunça no escritório é útil. O distúrbio é devido a problemas temporários. Moscas, café, espirros, rabiscos, momentos ociosos, mudanças nas prioridades de trabalho e apenas lugares comuns para colocar coisas com as quais não sei o que fazer. Sem essa bagunça, seria mais difícil para mim usar o local de trabalho. E o próximo uso do escritório causaria novamente uma bagunça!
Então, obviamente, estou deixando uma bagunça entrar no meu escritório. Essa confusão resolve problemas temporários. Mas também está claro que estou lutando para manter essa bagunça sob controle. Eu luto pela limpeza do escritório. E não é fácil!
Esta regra se aplica ao código? Isso é absolutamente verdade! Quando escrevo código, tento o meu melhor para mantê-lo limpo. Mas também existem lugares pequenos onde eu quebro as regras precisamente porque essas violações possibilitam resolver problemas temporários.
Por exemplo, eu tento muito separar os apresentadores das visualizações. O código que coloca os dados em um formato apresentável não deve estar próximo ao código que exibe esses dados na tela. Por outro lado, quando você tenta fazer a tela parecer e funcionar corretamente, é muito difícil alternar entre dois arquivos diferentes. Às vezes, faz sentido combinar o código novamente, obter tudo o que funciona da maneira que você gosta e depois dividi-lo novamente. Essa técnica é conhecida como "Melhor Pior".
De qualquer forma, acho que faz sentido que o código seja habitável. Não devemos ter vergonha se nosso código parecer um pouco preenchido. Por outro lado, devemos nos monitorar cuidadosamente e impedir que o distúrbio fique fora de controle.