DEV Community

Henrique Lobo Weissmann (Kico)
Henrique Lobo Weissmann (Kico)

Posted on • Originally published at devkico.itexto.com.br on

Eu e o “Clean Code” – Parte 2: Descompilando

Terminei a primeira parte da minha análise com a seguinte pergunta: “o modo como o livro foi escrito pode induzir a este comportamento dogmático/apaixonado?”

Quando falamos de “Clean Code” muitas pessoas se exaltam. Não lembro de ter visto este comportamento com outros livros. Este fenômeno é péssimo pois dificulta uma visão crítica sobre o assunto e, consequentemente, impede que todos avancem na qualidade do código que escrevemos.

Meu objetivo neste post é reduzir esta paixão para que possamos ter conversas melhores sobre este tema. Para tal vou dissecar a estrutura narrativa do livro, isto é, como o autor (qual deles?) organiza sua argumentação para nos convencer do que aqui é tratado.

A partir do momento em que estas estratégias estiverem claras a pergunta com a qual iniciei este post poderá ser respondida.

Alertas sobre o que você lerá

Para este post não me interessa a versão original, mas sim a tradução para o português publicada pela editora Alta Books por ser a edição mais popular no Brasil e, portanto, aquela que mais nos influencia.

Tal como no primeiro post meu objetivo não é estar certo, mas levantar questões para que possamos iniciar leituras mais críticas do material técnico que chega a nós.

Muito do que aqui escrevo se baseia nos argumentos que apresentei na primeira parte desta série, sendo assim recomendo que você a leia primeiro (link).

Cito alguns trechos do livro nos quais identifiquei alguns comportamentos bem peculiares. Não caberia aqui citar todos os trechos aonde os mesmos ocorrem. O objetivo não é tirar do contexto o que foi dito (pelo contrário, em todos os casos digo exatamente onde encontrar a citação), mas sim ajudar você que irá ler ou reler o livro a ter uma visão mais fria da obra.

Quem escreveu o livro?

Se você perguntar para a maior parte das pessoas elas lhe respondem prontamente: “Robert C. Martin, o Uncle Bob!”.

A resposta está parcialmente correta: ele escreveu o livro, mas também o organizou, e não é o único autor. Há outros:

  • Brett Schuschert – “Concorrência” e “Apêndice A – Concorrência II”
  • James Greening – “Limites”
  • Jeff Langr – “Classes” e “Emergências”
  • Kevin Dean Wampier – “Sistemas”
  • Michael Feathers – “Tratamento de Erro”
  • Tim Ottinger – “Nomes Significativos” (meu capítulo favorito)

Se você colocar estes autores em perspectiva, verá que na realidade são responsáveis por aproximadamente um terço do livro:observe o gráfico que fiz mostrando o número de capítulos por autor.

Esta informação parece boba mas faz toda a diferença na sua releitura pois lendo atentamente, apesar da tradução homogeneizar os estilos, verá que são visões e estratégias narrativas diferentes presentes no texto.

Levando em consideração que Robert Martin escreveu no mínimo dois terços do livro e é o responsável por compilar o trabalho dos demais autores, daqui para frente neste texto levarei em consideração apenas este como o autor e não levarei em consideração em minha análise os capítulos que não são de sua autoria.

Primeira indução – o título

A estrutura narrativa deste livro usa e abusa de emoções e valores a começar pelo título: “Código Limpo”. A escolha do título na minha opinião é um feito de marketing genial: é normal encontrar pessoas que referenciam qualquer boa prática de codificação como “código limpo” ou “clean code” (mesmo que estas práticas sequer estejam presentes no livro).

Limpeza aqui entra no mínimo como um valor estético do ponto de vista metafórico. O único caso que conheço de personagem que encara a sujeira como virtude é o Cascão (criado por Maurício de Souza). Este é o primeiro momento de indução do leitor a emoções que vão além de uma leitura técnica padrão.

Todo mundo quer fazer parte de um grupo que seja referência em seu ofício. Você quer ser um “clean coder” quando está começando e também quer “codificadores limpos” em sua equipe.

Segunda indução – o personagem “Uncle Bob”

Antes uma história envolvendo eu, Wittgenstein e Hegel

Por muitos anos um dos meus maiores heróis foi Wittgenstein. Lembro que apesar de não entender nada do que ele escrevia pensava comigo: “não entendo por que deve ser algo brilhante”. De fato era genial, muito mais do que imaginava na época com meus 21 anos.

E eu lia tudo sobre Wittgenstein: há vários livros fascinantes sobre sua época (A Viena de Wittgenstein), e biografias maravilhosas (Wittgenstein, o Dever do Gênio). Até que percebi algo curioso: o que realmente foi meu motivador inicial pra gostar tanto de Wittgenstein não era sua obra, mas sua vida (que é incrível e cercada de personagens históricos tão fascinantes quanto ele).


Wittgenstein: a maior parte dos problemas da Filosofia se deve a uma má compreensão da linguagem. (da TI também)

Quando percebi este meu desvio consegui pela primeira vez ler Wittgenstein direito e aprendi horrores no processo: até hoje é um dos autores que mais me influencia e mais me fez crescer, mas me arrependo de ter sido seduzido por todo este “glamour” no início: perdi muito tempo.

Outro autor que me influenciou demais foi Hegel: mas este teve uma vida que ao contrário da de Wittgenstein, era um tédio absoluto (não qualquer tédio, O Tédio Absoluto).

A escrita de Hegel é muito mais difícil e complexa que a de Wittgenstein, mas a entendi muito mais rápido. Na realidade, pra surpresa de todo mundo foi imediato, meu foco estava no conteúdo que Hegel escrevia, e não no Hegel.

O que aprendi com isto? Personagens carismáticos podem te desviar do foco principal ou construir uma aura que te impede de ver as coisas de forma fria.

De volta ao “Uncle Bob”

Na primeira parte desta série falei um sobre a construção da autoridade. A personagem do autor entra nesta fórmula também e claramente há a elaboração de uma personagem aqui, a partir do próprio nome (palavras são poderosas): “Uncle Bob” (o “Tio Bob”).

A escolha do apelido é novamente algo muito inteligente: reduz a gravidade do nome original do autor (Robert Martin) e ao mesmo tempo constrói proximidade com o leitor. A proximidade se dá não só pelo apelido mas também por serem apresentados no texto pequenos detalhes sobre a vida privada desta personagem. Um exemplo sutil mas doce é a ilustração de entrada do capítulo 2 (“Nomes significativos”).

(a história que contei sobre mim serviu a dois fins: te aproximei de mim ao mesmo tempo que mostrei como personagens podem nos seduzir ;) )

E claro, há inúmeras palestras que você encontra na Internet nas quais a personagem vai se construindo: falando sempre de forma direta (adora gestos), segura (aponta o dedo), bem humorada, madura, e cheio de exclamações. Ao mesmo tempo diversas menções a elementos de cultura geek são realizados (Star Trek, Star Wars) alimentando com isto o estereótipo do nerd.

Observe como no texto de Robert Martin (o “tio”) há as mesmas exclamações. No primeiro capítulo (“Código Limpo”) você encontra um exemplo clássico logo na segunda página:

(…) E que não precisarão mais de programadores, pois as pessoas criarão programas a partir de especificações.

Bobagens! Nunca nos livraremos dos códigos (…)

Robert Martin – Capítulo 1 – Código Limpo

A linguagem adotada na maior parte das vezes é coloquial, o que ajuda a criar o elo entre leitor e autor. Ele gosta das mesmas coisas que você, e tem uma linguagem simples, parecida com a sua.

Terceira indução – valores morais e falsas equivalências

Por todo o texto há menção a valores morais e estéticos, o que na minha opinião é perigosíssimo quando o assunto é código fonte. Entenda: não estou negando que haja um fator artístico ou ético no ofício, mas é um risco enorme quando estes aspectos projetam suas sombras sobre a engenharia.

No Epílogo do livro ao contar sua participação em uma conferência sobre desenvolvimento ágil em 2005 quando recebe uma fitinha verde de punho de Elisabeth Hedrickson na qual se encontrava escrito “Obcecado por testes” chega a dizer:

(…) Descobri que eu não poderia retirar minha fitinha do punho. Não por que ela estivesse presa a ele, mas por estar moralmente presa. A fita fazia uma afirmação evidente sobre minha ética profissional (…)

Robert Martin – Epílogo do livro Clean Code

E o uso de metáforas morais é encontrado em muitos pontos no livro. No capítulo 4 – Comentários -, por exemplo, você encontra o seguinte trecho:

Por que não gosto de comentários? Por que eles mentem. Nem sempre, e não intencionalmente, mas é muito comum.

Robert Martin – Capítulo 4 – Comentários

Na citação acima talvez você ache que estou pegando no pé, entretanto após ler as quase 400 páginas do livro encontrando metáforas morais como esta o tempo inteiro, não há como negar que um iniciante acabe por absorver toda esta “moralidade” e, com isto, adquirir uma leitura apaixonada pelo texto.

(Um post que preciso escrever é sobre este capítulo 4, que é um dos mais danosos da história da computação na minha opinião. Podem me cobrar isto)

É também comum o uso de exemplos extremos para se justificar a aplicação de boas práticas. No primeiro capítulo há uma comparação com medicina que é um belo exemplo:

(…) e se você fosse médico e um paciente exigisse que você parasse com toda aquela lavação das mãos na preparação para a cirurgia só porque isso leva muito tempo?

Robert Martin – Capítulo 1 – Código Limpo

Observe como são comparadas duas situações de gravidade absolutamente distintas: uma cirurgia (específica) e o ato de codificar qualquer coisa (absolutamente genérico). Lendo atentamente o texto você encontrará exemplos similares pelo texto. Não são situações equivalentes com este tipo de generalização no segundo caso.

Outro exemplo do apelo à estética você encontra na introdução do capítulo 5: “Formatação”:

Quando as pessoas olham o código, desejamos que fiquem impressionadas com a polidez, a consistência e a atenção aos detalhes presentes. Queremos que reparem na organização. Desejamos que suas sobrancelhas se levantem ao percorrer os módulos; que percebam que foram profissionais que estiveram ali.

Robert Martin – Capítulo 5 – Formatação

Observe que interessante o apelo a estética, à impressão que os outros terão de nós, é um chamado portanto à necessidade que todos tempos de sermos bem recebidos a um grupo se sobrepondo à necessidade real da formatação: facilitar a leitura.

Estes são apenas alguns exemplos que você encontrará no texto do livro. São trechos extremamente eficazes em manter o leitor colado ao texto, sem dúvidas, mas ao mesmo tempo induzem o leitor a emoções que acabam por gerar as situações que descrevi na primeira parte desta série.

O trecho sobre “Escolas de Pensamento”

Antes de finalizar esta segunda parte preciso falar sobre o trecho “Escolas de Pensamento” pois muitas pessoas o referenciaram para mim dizendo que neste trecho o autor se exime do comportamento dogmático dos leitores. Discordo.

Logo no primeiro parágrafo encontramos:

(…) Apresentaremos nossos conceitos como verdades absolutas, e não nos desculparemos por nossa austeridade. Para nós, a essa altura de nossa carreira, tais conceitos são absolutos. São nossa escola de pensamento acerca do que seja um código limpo.

Robert Martin – Capítulo 1 – Código Limpo – grifos do autor

Na sequência é feita uma comparação muito pobre com escolas de artes marciais. Não há sentido na comparação pois diversas das práticas mencionadas no texto são recomendações comuns em nossa indústria (funções pequenas, separação de responsabilidades, etc) e não “novidades” exclusivas trazidas por esta “escola de pensamento”.

O uso da metáfora “escola de pensamento” é inclusive bastante controverso pois fica parecendo que o autor está comparando sua escola a um “time” e seus “seguidores” a torcedores.

Respondendo à pergunta inicial e prosseguindo

Na minha opinião, sim, o modo como “Código Limpo” é escrito pode induzir seus leitores a um comportamento dogmático.

Há uma série de fatores aqui que levam a isto:

  • Tal como disse no primeiro post, o fato de se terminar um livro é considerado um grande feito (e é) por muitos e, como tal, é comum a defesa do conteúdo com unhas e dentes.
  • É criada uma conexão direta com o leitor a partir da construção de uma personagem que é o autor.
  • O uso repetido de metáforas baseadas em valores estéticos e morais induz aqueles que estão iniciando a terem uma visão mais focada em princípios morais (do autor) que técnicos.

É por esta razão que sempre digo para ler este livro com muito cuidado e, ainda mais importante, junto a outros materiais. As práticas ali contidas não foram criadas pelos autores que ali escrevem, são o resultado do trabalho de outras pessoas e da prática coletiva do ofício de construção de sistemas.

Há uma oportunidade perdida neste livro: já que há tantas metáforas morais/estéticas, é uma pena que sejam apenas metáforas, e não tenha havido aqui um aprofundamento nas mesmas.

(talvez haja fora do livro, mas não conheço)

Você não deve fazer um julgamento moral pelo modo como este texto foi escrito: esta foi a estratégia adotada pelo autor e que foi muito bem sucedida. Talvez se não o tivesse feito desta forma uma multidão de pessoas jamais lesse um livro sobre boas práticas de construção de software.

Infelizmente esta linguagem apaixonada acaba por gerar o comportamento que menciono no primeiro post. Uma pena: empobrece algo que tem muito valor. Como dizem por aí “é bom, mas é ruim”.

Meus próximos posts serão sobre capítulos específicos do “Código Limpo”. Começarei pelo capítulo 4 – Comentários, que na minha opinião nos trouxe mais problemas que soluções.

PS: uma última citação

Quando terminei o texto me lembrei do Prefácio do livro, escrito por James O. Coplien.

(…) Comprei dois pacotes dessa iguaria essa manhã e nela veio este antigo ditado dinamarquês:

(… – tá escrito em dinamarquês)

“Honestidada em pequenas coisas não é uma coisa pequena”. Era umb om presságio para com o que eu já desejava dizer aqui.

James O. Coplien – Prefácio de Código Limpo

Não falei??? O prefácio já nos avisa! :D

PS 2: algo que ajuda nas leituras técnicas

Autores carismáticos são adoravelmente perigosos. Eles te seduzem sem que você perceba. Algo que sempre me ajudou bastante é conhecer as falácias lógicas mais comuns. Seguem alguns links legais:

The post Eu e o “Clean Code” – Parte 2: Descompilando appeared first on /dev/Kico.

Top comments (2)

Collapse
 
urielsouza29 profile image
Uriel dos Santos Souza

To gostando demais dos seus textos!

Collapse
 
loboweissmann profile image
Henrique Lobo Weissmann (Kico)

Obrigado!