chester's blog

technology, travel, comics, books, math, web, software and random thoughts

Clean Code (Código Limpo), por Robert “Uncle Bob” Martin

14 Aug 2011

Já observei que a maior parte dos programadores com algum tempo de estrada tende a se acomodar, acreditando que o que quer que fosse estado da arte (ou apenas popular) quando a pessoa era ultra-jovem é a verdade absoluta e inenarrável. Não sei se por preguiça, insegurança, ou cansaço, mas muita gente, depois de um tempo, se recusa a a aprender qualquer tecnologia, paradigma ou modo de trabalho novo, em muitos casos se afastando da programação porque já “aprendeu tudo”.

Robert C. Martin é tiozão, assim como eu. Talvez um tiquinho mais: ele até adotou o nick “Uncle Bob”, me fazendo pensar se eu não vou virar o “Tio Chester” logo, logo. Mas, também como eu, ele não é acomodado. Muito pelo contrário: entre seu tempo de consultor, desenvolvedor e autor, ele foi um dos criadores do Manifesto Ágil, e, mais recentemente, ajudou a consolidar o termo “Artesanato de Software” (Software Craftsmanship).

Artesanato, de fato, descreve o dia-a-dia da imensa maioria dos programadores profissionais de forma muito mais completa do que as metáforas tradicionais que giram em torno de engenharia ou administração, reaproximando o ofício das suas raízes na computação, mas levando em conta o aspecto de criação, qualidade e atenção ao ser humano que está na “outra ponta”. Uncle Bob postula com muita propriedade que a adoção de uma política de aprendizado constante e qualidade total é fundamental para um profissional digno do nome – em um bate-papo com o Fábio Akita ele compara o desenvolvimento de software com a medicina, ilustrando muito bem a questão.

O Clean Code é um guia sobre um aspecto fundamental da atividade: a criação de código limpo. Mesmo tendo bastante experiência e escrevendo código que eu julgava muito limpo e bem documentado, o livro me mostrou diversas maneiras de escrever código que seja mais fácil de ler e manter. O autor adverte: você pode não concordar com todas as sugestões dele, e provavelmente vai discordar de forma veemente de uma ou duas (no meu caso: deixe meus parâmetros booleanos em paz :-P). Mas o espírito é que conta.

Uncle BobEle vai a fundo em uma série de aspectos – quase todos são possivlemente pequenos detalhes, mas a atenção ao conjunto cria programas que dão orgulho para quem faz e alívio para quem mantém. Os exemplos todos são baseados em Java, mas compreensíveis para qualquer um que tenha conhecimentos básicos de orientação a objeto, e quase todos são aplicáveis a qualquer linguagem.

Comportamentos enraizados no Java (ex.: JavaDoc, encapsulamento via getters/setters) são analisados com a mente limpa, na tentativa de separar o mito da realidade no que diz respeito aos benefícios reais (e possíveis malefícios) de cada um deles. Eu certamente revi meus conceitos quanto à maneira de nomear e dividir os artefatos dentro do meu software, e recomendo o livro para qualquer um que leve a programação a sério, independente da experiência ou área de atuação.

Li a versão Kindle que, apesar de não usar formatação monoespaçada para o código, foi bem confortável de ler, até mesmo no iPod Touch (meu companheiro do ônibus/metrô). Existe uma versão nacional (“Código Limpo”), mas não sei quão boa é a tradução. Qualquer que seja o formato ou idioma, só não recomendo a leitura se para você programação é só um day job, ou se você acha que o seu jeito é o jeito certo, e todo o resto é modinha. Neste caso, eu torço muito para que a gente se encontre na rua ou na balada, mas jamais em um projeto de software.

Comments


Murilo

Chester, "clean code" é um baita livro, todo programador que se "importa" deveria ler em algum momento da sua carreira. Ainda na linha de "software craftsmanship" temos, "code complete" e "the architecture of open source applications", esse último trata de exemplos do tipo "sabe aquilo que vc odeia no meu software? está lá pq na época fez todo sentido". Um livro que eu adoro e te faz voltar no tempo (o que um computador faz e como faz) é "code: the hidden language of computer hardware and software" do Charles Petzold.

ps.: vi na sidebar que vc está lendo "code complete", tô esperando o post sobre ele. :)

chester

Opa, beleza?

Esses dois últimos eu não conhecia. Já vão pra fila! :-)

O Code Complete eu emendei justamente por ver que aqueles que falam bem do Clean Code também falam bem deste (e já tinha vontade de ler desde que o Spolsky recomendou em 1900 e guaraná com rolha). Assim que eu ler, comento!

Abraço.



Otto Teixeira

Otto Teixeira

Já dei uma lida nos primeiros capítulos dele e é bem legal mesmo. Passei a tomar certos cuidados, como não colocar mais literais "soltos" no meio do código e criar funções pequenas e com poucos parâmetros (me policiei mais nessas).

O triste é ver que seus colegas de trabalho não ligam para isso e você se depara com funções com centenas de linhas de códigos e ifs.

Sobre a tradução, não vi, mas não espero nada além de lixo dessa editora.


Marcel

Oi, Chester

Adoro esse livro e estou procurando a versão em ingles, eu li somente a versao em portugues e ela deixa muito a desejar.

Alguns trechos a tradução pulou palavras chaves e isso dificultou o entendimento de alguns trechos.

chester

É, bom você registrar, para que as pessoas saibam dos issues. Olha, só pelo Kindle o investimento em um tablet (ou no próprio aparelho Kindle) vale - dá pra comprar esses livros na hora, em inglês, por preços iguais ou menores que as edições nacionais...



Learn how to write in Markdown with this Quick Reference.