Objetivo final de todo desenvolvedor de software deve ser escrever um código confiável e sim. Nada mais importa!
Qual é a melhor maneira de escrever um código confiável? Simplicidade. A simplicidade é o oposto da complexidade(obvio).
Portanto, nossa primeira e principal responsabilidade como desenvolvedores de software deve ser reduzir a complexidade do código.
Não importa o paradigma usado:
- Funcional.
- Lógico.
- Declarativo.
- Imperativo.
- Orientado a objetos.
- Orientado a eventos.
- E outros
Tente ser o mais simples que puder!
Os principios SOLID tentam de tudo para te fazer criar código simples!
Escrever código simples é muito complicado!
Cada função deve ser precisa -- deve ter apenas um propósito. Cada ação ou atividade deve ser implementada exatamente em um lugar.
Não comece a otimizar o código a menos que tenha certeza de que há um problema de desempenho. Otimização "quase sempre" trás código mais complicado!
Vamos supor que você progamou um software e depois de alguns anos ele precisa de algumas melhorias de acordo com novas situações e requisitos.
Mas, devido à falta de simplicidade de código em seu programa, mesmo você, ou seja, o desenvolvedor, não consegue entender o código que foi codificado anos atrás.
Escrever software não é uma grande conquista, mas escrever software, mas escrever
código simples isso é uma grande conquista! Meus parabés se você consegue!
O código deve ser tão simples que outros possam entendê-lo facilmente apenas olhando o código em si.
E isso é dificil de conseguir!
Código Simples Apresenta Menos Bugs
Bugs são inevitáveis na construção de software. Mas isso não significa que não devemos nos esforçar ao máximo para evitá-los. Encontramos muitas maneiras de tentar fazer isso (testes, revisões de código, programação em pares, etc.) e acredito que trabalhar em prol da simplicidade é outra dessas maneiras. Existem diferentes maneiras pelas quais um código simples pode levar a menos bugs:
Código simples geralmente resulta em menos código; menos código ≈ menos bugs
Código simples é mais fácil de entender e, portanto, leva a revisões de código mais eficientes
É mais fácil escrever bons testes para código simples; melhores testes ≈ menos bugs
Além disso, bugs introduzidos por código simples são muito mais fáceis de lidar. Como o código simples é mais fácil de entender, também é mais fácil encontrar as coisas erradas nele. O código complexo, por outro lado, não é apenas mais difícil de entender, mas tende a ser tocado com menos frequência. Isso resulta em falta de familiaridade com o código e dificulta a depuração.
Código simples é mais fácil de manter
Quase todo software está destinado a mudar, seja devido a correções, melhorias ou novos recursos. Precisamos estar cientes desse fato ao projetar e escrever nosso código. Embora desejemos focar no problema em questão e evitar otimizar prematuramente, estar ciente de que nosso código será tocado por outra pessoa no futuro nos levará a escrever um código mais limpo e de melhor compreensão.
Então, por que o código simples é mais fácil de manter? São as mesmas razões que o tornam menos problemático: menos código, mais fácil de entender. O principal motivo é que os desenvolvedores geralmente estão menos familiarizados com as partes complexas da base de código porque são tocadas com menos frequência. Isso pode retardar significativamente o desenvolvimento.
Aqui temos algumas ideias de como conseguir! As ideias são subjetivas!
https://softwareengineering.stackexchange.com/questions/123432/does-simplicity-always-improve-readability/123452#123452
Outras pessoas podem ter outras maneiras de conseguir.
-
Seja consistente
Isso significa que seu programa deve funcionar de maneira consistente internamente. Um programador familiarizado com o uso de uma parte do seu código deve se familiarizar imediatamente com o uso de outra parte do código apenas observando os códigos. -
Legibilidade
A legibilidade pode ser outra maneira de simplificar seu código.
A legibilidade de um código pode ser julgada pelo espaço ocupado pelos símbolos e letras usados em seu código.
Não há nenhuma regra específica sobre como o código deve ser espaçado, as únicas questões são quão consistente e direto ao ponto.
- Nomeando as coisas
Nomear coisas indica que quando você cria uma função ou nome de variável, ele deve corresponder ao trabalho para o qual você criou.
Os nomes devem ser bons o suficiente para comunicar completamente o que algo é ou faz, sem ser tão complicado que se torne difícil de ler ou entender.
- Comentários
Às vezes, esquecemos que essa fala é sobre o quê? Então, é fácil escrever o comentário, explicando o que ele diz?
Portanto, caso você não esteja disponível, o outro membro do grupo poderá acessá-lo facilmente, sem perda de tempo.
https://www.codesimplicity.com/book/
Temos que entender que simplicidade podem ser coisas diferentes para pessoas diferentes em estagios de aprendizado diferentes!
O que é simples para um Senior, pode não ser para um JR.
Se você não lutar ativamente pela simplicidade do software, a complexidade vencerá.
… e vai ser uma merda.
Henrik Joreteg Twitter
Dentro do seu projeto a equipe decide o que é simples. Juntos, vocês julgam seu código subjetivamente. Recomendo quatro qualidades subjetivas;
Testável, compreensível, navegável e explicável.
http://www.extremeprogramming.org/rules/simple.html
-
Testável
significa que você pode escrever testes de unidade e testes de aceitação para verificar problemas automaticamente. Isso afeta o design geral e o acoplamento de objetos em seu aplicativo. Divida seu sistema em pequenas unidades testáveis. -
Navegável
é a qualidade de ser capaz de encontrar o que quiser, quando quiser. Bons nomes ajudam você a encontrar coisas. O uso correto de polimorfismo, delegação e herança ajuda a encontrar as coisas quando necessário. -
Compreensível e explicável
é óbvio, mas altamente subjetivo. Uma equipe que trabalha com um sistema há muito tempo o entenderá, mesmo que alguém novo esteja completamente confuso. Portanto, também recomendo explicável como uma qualidade que significa que é fácil mostrar a novas pessoas como tudo funciona.
http://www.extremeprogramming.org/rules/simple.html
Fontes:
https://www.codementor.io/@joniwieben/on-the-importance-of-simplicity-in-software-uj5y3tnw6