A importância da simplicidade

Boas práticas existem na execução de qualquer atividade, desde colocar um copo no armário da cozinha, escovar os dentes, ou desenvolver uma rotina em um programa. Muitas dessas boas práticas são ensinadas e frisadas nas abordagens didáticas do planejamento, desenvolvimento, implementação e suporte de sistemas informatizados, algumas inclusive são tão importantes que deveriam ser vistas como “regras de ouro”. No que diz respeito a programação, existem boas práticas associadas ao desenvolvimento do algoritmo independente da linguagem, e outras de aplicação específica relacionadas à ferramenta ou linguagem utilizada.

Ao iniciar este texto, a ideia original era abordar uma lista de boas práticas aplicáveis a qualquer linguagem, então comecei pela que eu considero uma das mais importantes: A Simplicidade. Porém, durante a elaboração do texto, foram necessários mais parágrafos para desenvolver o assunto. A frase de Martin Fowler em um de seus livros sobre refatoração de código aborda de forma simples e direta este assunto: “Qualquer um pode escrever um código que o computador entenda. Bons programadores escrevem códigos que os humanos entendam.”

Escrever um código complexo não necessariamente significa que ele foi escrito por um programador com profundo conhecimento da linguagem ou mesmo que ele sabia o que estava fazendo. Ou o código já nasce complexo, normalmente quando não se usa a melhor abordagem para o algoritmo e insiste-se numa linha de raciocínio que vai tornar possível resolver a questão, mas não é a melhor escolha, ou o código inicial nasce simples mas torna-se complexo ao ganhar mais funcionalidades, normalmente não previstas na análise inicial de sua concepção, ou que exigiriam uma refatoração cujo custo não poderia ser absorvido naquele momento, então mantém-se a lógica inicial e a nova funcionalidade ou comportamento fica parecendo um “remendo” no fonte.

A simplicidade é amiga do próprio programador. Afinal, depois de uma semana, um mês ou um ano, se o próprio desenvolvedor não registrou alguns “por quês” no código, nem ele vai lembrar por que optou por fazer daquela forma, e vai ter que reestudar o próprio código para entrender o que ele faz. Um programador experiente consegue fazê-lo, porém isso torna-se cada vez mais difícil e custoso quanto mais o código cresce desordenadamente, e até virar um mostro marinho de cinco pernas, três braços, tromba e chifres, e ninguém mais quer mexer naquilo, com medo de um dos braços do monstrinho possa lhe enfiar a mão na sua nuca e te arrancar a espinha! E isto terá sérias consequências no plano de carreira desse programador ao assumir novas responsabilidades ou projetos, pois não é possível ele subir um degrau na carreira se não houver alguém capacitado para preencher o degrau que hoje ele ocupa, e que ficará vazio com a sua subida.

Existem casos onde o código têm um nível intrínseco de complexidade, não por estar mal escrito ou remendado, mas onde a natureza do processo é complexa, ou ele foi escrito de uma forma mais complexa para obter ganhos diretos ou agregados, como um diferencial crucial de performance ou escalabilidade para um fim específico, onde este ganho justifica a complexidade da sua implementação e seu custo de manutenção. E mesmo assim, um bom programador neste ponto, usando sabiamente de um ou mais comentários sobre a lógica e os fatores determinantes da escrita da rotina, vai tornar o entendimento do código mais simples.

Procure sempre a simplicidade, grandes problemas da humanidade são resolvidos de forma simples. Utilize o complexo apenas quando realmente necessário, quando realmente existe um ganho tangível, pois a complexidade naturalmente vêm com um custo agregado, que nem sempre é necessário.

Até o próximo post 🙂

Referências

Anúncios

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