Categorias
Desenvolvimento

Código Limpo – 7 dicas na criação de funções

No desenvolvimento de sistemas, é comum criarmos funções em nossos códigos. Função é um trecho de código que realiza alguma operação específica, ela pode ser utilizada várias vezes em qualquer lugar do sistema. Funções trazem algumas vantagens no desenvolvimento de sistemas como:

  • Facilita o desenvolvimento. 
  • Organização do sistema. 
  • Reaproveitamento de código.

Neste artigo vou apresentar 7 dicas para a utilização de funções que aprendi com a leitura do livro Código Limpo.

1 – Dê bons nomes para funções

Uma das primeiras coisas para se escrever uma função é dar um bom nome a ela. É importante que a função tenha um nome que revele seu significado. Devemos evitar nomes que gerem confusão do que realmente função faz, ou mesmo nomes que geram ambiguidade, que possa ser entendido de forma diferente por pessoas diferentes. 

Também é importante utilizarmos nomes que possam ser pronunciados e que possam ser buscados com facilidade no editor de código. É  necessário ser possível falar o nome da função com facilidade para outro desenvolvedor e também que ela possa ser buscada com precisão no editor de códigos. Muitas vezes ocorre de ao buscarmos uma função ele retorna vários resultados, ou por ser um nome tão complexo não lembramos nem um pouco da sua composição para fazer uma busca. 

Nomes de funções devem ter verbos, que indicam a ação que será realizada pela função. E bom escolhermos uma palavra por conceito, uma palavra que em todo lugar que ela for utilizada, ela signifique realmente aquilo. Por exemplo se na classe x você utiliza a palavra get para recuperar informações, na classe y você também deve utilizar get ao invés de utilizar recuperar por exemplo.

2 – Crie funções pequenas

Uma função pequena facilita o trabalho com ela. Funções devem ser como parágrafos de uma história, uma função completando a outra para formar um todo, que faça sentido e seja facilmente compreendido. Podemos ficar facilmente perdidos trabalhando com funções grandes. Já trabalhei em projetos com funções com mais de 300 linhas, muitas vezes ficava perdido no meio da leitura e tinha de começar novamente para entender o funcionamento. Com funções pequenas a leitura e compreensão é muito mais fácil.

3 – Crie funções que façam somente uma coisa

Uma função deve fazer apenas uma coisa, mas deve fazê-la da melhor maneira possível. O difícil é definir o que seria uma coisa. Mesmo que uma função tenha várias instruções, se estas instruções estão no mesmo nível de abstração podemos dizer que ela só faz uma coisa. Uma modo de saber se uma função faz mais de uma coisa é saber se é possível extrair dela outra função que não seja apenas uma reformulação. 

4 – Crie funções que tenham apenas um nível de abstração

Segundo o Wikipedia Abstração é “a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais.”. Assim em funções creio que o nível de abstração seja o objetivo da função, o que ela deve cumprir. Assim ter apenas um nível de abstração seria cumprir apenas um objetivo. Quando temos um if e else por exemplo, temos uma condição e caso não seja atendida realizará outra coisa. Neste caso temos dois níveis de abstração, pois nossa função realiza duas coisas diferentes dependendo do resultado da condicional. 

5 – Crie funções que utilizem o menor número de parâmetros possível

O número ideal de parâmetros para uma função é zero, depois um e dois. No máximo três mais o mesmo deve ser evitado. É difícil lidar com parâmetros, por isso o melhor é não os utilizar em funções. Dois motivos comuns para usar um único parâmetro em uma função são: Realizar uma pergunta sobre o parâmetro. ou trabalhar aquele parâmetro o transformando em outra coisa e retornando o resultado. Quando for necessário passar muitos parâmetros para uma função, pode ser passado um objeto como parâmetro. Assim ficará bem descrito o que é aquele parâmetro mesmo se tratando de várias informações.

6 – Crie exceções ao invés de retornar códigos de erros na função

Ao retornar um código de erro, criamos ao um problema para quem chamou a função, ele terá de lidar com o erro no momento causando estruturas aninhadas de if por exemplo. Coloque as estruturas de tray/cath em suas próprias funções. Se pensarmos no que falamos no item 3 criarmos uma função que só tenha o tray/catch estamos fazendo somente uma coisa que é o tratamento de erro, dentro do tray /catch. Assim temos uma boa separação que facilita a compreensão do código.

7 – Evite repetições de funções

Muitas vezes é difícil perceber quando uma função está fazendo algo repetitivo, uma função pode conter instruções diferentes mas no fim realizar a mesma operação que outra. Então temos de ter muito atenção quanto a isso pois a duplicação pode ser a raiz de todo o mal no software. Muitas práticas têm sido criadas para reduzir a duplicação ou mesmo eliminá-la. Algumas delas como programação orientada a objetos e regras de normalização de banco de dados. Com isso devemos evitar ao máximo a duplicação de código.

Conclusão

Como disse no início, escrevi este artigo com base no que aprendi com a leitura do capítulo 3 do livro Código Limpo. Tentei ser bem resumido pois o conteúdo do livro é bem extenso. Recomendo a leitura deste livro, pois o mesmo aborda várias boas práticas na programação de software.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *