Objetivos e Desafios com o Clean Code

Para a grande maioria dos desenvolvedores minimamente preocupados com Qualidade, Evolução e Manutenibilidade de Software, um código limpo pode ser traduzido em termos de simplicidade, elegância e legibilidade. Ou seja, atribuir características ao código fonte, que dêem ao desenvolvedor semelhante nível de complexidade necessário para interpretar um texto.

Isso pode soar até estranho, porque apesar de usar linguagem humana para representar conceitos computacionais, a programação muitas vezes subentende um certo nível de preparo implícito do desenvolvedor, para compreender o que está codificando. Mas quando se trata de código legado, com largo domínio de negócio e uma equipe heterogênea formada por todo tipo de desenvolvedores, compreender o código começa a se tornar um grande desafio.

Image

Nesse momento, muitos problemas começam a ser introduzidos no código, como Comentários Ruins e Desnecessários, Duplicação de Código, Classes e Métodos Muito Grandes, Alto Grau de Acoplamento e Dependências. Isso ocorre muitas vezes por utilizar Nomes de Métodos Pouco Intuitivos, ou por implementar Comportamentos com Muitas Condições e Complexidades, ou mesmo por atribuir Muitas Responsabilidades aos Métodos e Classes. Todos esses problemas e mais alguns foram denominados por Martin Fowler como Bad Smells (maus cheiros) que sinalizam reais necessidades de refatoração e reengenharia de código.

Robert C. Martin aborda em seu livro Clen Code, sobre alguns técnicas que propõe uma cultura de desenvolvimento Orientado a Objetos, com o objetivo de preparar desenvolvedores para identificar problemas de código e corrigi-los por meio de refatoração. Mas o problema está em como manter e desenvolver uma cultura de qualidade preocupada com esse tipo de detalhes. Ele apontou ironicamente que uma das mais válidas métricas de qualidade de código é a quantidade de WTFs/Minute. Ou seja, quanto melhor for o código fonte, menos estressante, frustrante e desgastante será a experiência do desenvolvedor ao dar manutenção de código.

Image

Não há como fugir disso, pois existem pesquisas que afirmam que 80% do tempo e custos de desenvolvimento de software são dedicados à manutenção e suporte de aplicações existentes, e que 40% desse tempo é gasto para entender o código fonte (Alexandru Telea). Compreender Software é sim uma tarefa complicada, mas adotar boas práticas de codificação podem contribuir para minimizar esse problema.

O próprio Robert C. Martin em seu outro livro “Agile Software Development: Principles, Patterns and Practices” (2002) apontou alguns princípios e práticas de Orientação a Objetos que tem como objetivo criar sistemas que sejam fáceis de manter e estender ao longo do tempo. O SOLID é uma sigla mnemônica que representa os 5 princípios propostos por Robert (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion) e propõe ao desenvolvedor comportamentos que podem guiá-lo a um código mais saudável, como definir e simplificar as responsabilidades de métodos e classes, ou como escolher a melhor forma de abstrair conceitos, comportamentos e implementações ao longo da evolução da arquitetura.

Cabe às equipes de desenvolvimento encontrar as melhores alternativas para transformar esses conceitos teóricos em uma cultura de desenvolvimento mais organizacional. Para isso valem as diversas técnicas e metodologias que apoiem a troca de experiências e a distribuição de conhecimento entre a equipe. Mais informações podem ser encontradas no blog http://www.cleancoders.com/ do autor.

Anúncios

Uma opinião sobre “Objetivos e Desafios com o Clean Code

  1. Pingback: Clean code good! Spaghetti code bad! | uMov.me Labs

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s