O blog está completamente empoeirado e com teias de aranha. A culpa é completamente minha, tenho tido vários problemas pessoais que me tiraram todo o tempo livre que eu dedicava à escrita de artigos. É difícil de se acostumar e se organizar de acordo com as novidades da vida. Mas hoje, para tirar um pouco a poeira e as teias de aranha, vou falar de um assunto que tem se passado por minha cabeça a alguns meses, uma visão pessoal sobre Simplicidade de Código.

Minha idéia é fazer uma reflexão breve e esperar o feedback de vocês leitores, para refletirmos sobre este assunto tão comentado e fomentado por empresas nacionais e internacionais.

O que você entende por Simples?

A primeira pergunta a se fazer é: O que você entende por simples? Bom, isso é algo que deve-se pensar muito para responder, principalmente para não dizer coisas confusas. Mas será que existe uma forma de falar sobre isso claramente? Vamos tentar.

Para mim algo simples é algo facilmente compreensível e identificável. Em User Experience, o termo simples é a chave de tudo, já que os usuários podem facilmente aproveitar o uso de alguma ferramenta, software, etc. Este termo é bastante empregado na definição dos produtos da Apple, talvez por este termo sempre ter sido pregado em seus produtos ou por realmente os produtos serem simples.

Código-fonte

Mas trazendo para o código, realmente existe o termo simplicidade? Sim e não. Códigos desenvolvidos por outras pessoas tendem a ser difíceis de se entender, principalmente por cada um ter uma visão particular sobre a melhor forma de se fazer uma determinada tarefa. Mesmo com documentação e tudo mais, existe um esforço mínimo para a compreensão da visão que o outro desenvolvedor tem.

Mas utilizando princípios de DRY (Don’t Repeat Yourself) e KISS (Keep It Simple, Stupid), é possível minimizar esta complexidade. Utilizar métodos e funções já prontas da própria linguagem de programação, padronizar códigos repetitivos, utilizar orientação a objetos, utilizar Domain Specific Language, separar melhor o código em camadas, delegação de responsabilidades etc.

Só que tendo estas premissas em mente, você acaba trazendo a complexidade para si próprio. Como assim? Você pensa e repensa antes de codificar algo, o que pode afetar até sua produtividade. Realmente não existe muita mágica para diminuir complexidade de código… Só que existe algo que pode ser o melhor amigo do programador.

Refatoração

Refatorar código é uma ótima forma de minimizar a complexidade de código. Agora talvez seja a hora onde você, leitor, fale bastante mal de mim, por escrever tanta coisa e chegar em um ponto tão óbvio para todos. Mas essa é a mais pura verdade, refatorar é ótimo e ajuda muito a diminuir a complexidade do seu código.

Só que não se limite a apenas você mesmo refatorar o seu código, passe ele para amigos, colegas, para seu chefe e etc. vendo a opinião e as alterações de cada um, o que pode acabar tendendo a uma quantidade mínima de linhas e uma clareza maior.

Mantenha o foco

Por último, uma dica importante é manter o foco. Por experiência própria digo que esquentar a cabeça com a melhor forma de programar pode acabar te trazendo problemas de produtividade. Resolva o problema, faça funcionar, escreva os testes para garantir que seu código faz o que deveria fazer e refatore após tudo pronto.

Simples assim… Você já terá algo pronto e testado, poderá se dedicar a refatorar este código e não vai ficar horas e horas quebrando a cabeça para tentar achar a solução mais perfeita do que você está fazendo. Não tenho experiência suficiente para falar sobre BDD (Behavior Driven Development) mas dizem que utilizar ele da maneira correta traz muitos benefícios na questão de testes, entendimento e legibilidade de código, DSL e etc.

Bom, esse é um assunto que pode gerar uma discussão boa e quero agora ver de você, leitor, uma opinião sobre tudo isso. Como você faz para diminuir a complexidade do seu código? Você gosta e acredita na refatoração?