(por vezes grafado Ockham), a lex parsimoniae (lei da parcimônia) é um princípio, solucionador de problemas, filosófico reducionista, que permite distinguir entre teorias equivalentes e pode ser utilizado como técnica para formulação de modelos teóricos. Em resumo, entre duas teorias com resultados iguais, que explicam ou preveem os mesmos fenômenos, devemos escolher a mais simples.
de software usada para indicar a complexidade de um programa de computador. Desenvolvida por Thomas J. McCabe em 1976, ela mede a quantidade de caminhos de execução independentes a partir de um código fonte. Essa complexidade é computada através do grafo de fluxo de controle do programa: os nós do grafo correspondem a grupos indivisíveis de comandos, e uma aresta direcionada conecta dois nós se o segundo comando pode ser executado imediatamente após o primeiro. A complexidade ciclomática também pode ser aplicada a funções, módulos, métodos ou classes individuais de um programa. Uma estratégia de teste de software formulada por McCabe é testar cada caminho independente de um programa, de forma que a quantidade de casos de teste será a complexidade ciclomática do programa. https://pt.wikipedia.org/wiki/Complexidade_ciclom%C3%A1tica
inglesa You Ain't Gonna Need It. Em engenharia de software, é uma orientação de trabalho que sugere aos programadores que não adicionem funcionalidades ao código fonte de um programa até que estas sejam realmente necessárias. Ron Jeffries afirma que sempre se deve implementar coisas que se realmente precisa, nunca o que se prevê que um dia irá ser preciso.
: KISS principle acrônimo em inglês de: Keep It Simple, Stupid, ou seja, Mantenha Simples, Estúpido) é um princípio geral que valoriza a simplicidade do projeto e defende que toda a complexidade desnecessária seja descartada. Serve como fórmula útil em diversas áreas como o desenvolvimento de software, a animação, a engenharia no geral e no planejamento estratégico e táctico. Também é aplicado na Literatura, na Música e nas Artes em geral.
realizing that success depends on a project’s long-term viability. To help with that effort, the Software Improvement Group (SIG) has identified ten guidelines for delivering code that’s easy to maintain and adapt over time. “It introduces 10 guidelines on writing maintainable ‘real-world’ software that are actually just basic junior level stuff that's centered only on the happy path development.” “That's what I'm striving for and I think the book lacks a lot in monitoring, analytics, continuous integration, continuous deployment and etc. All ‘real’ in my opinion, maintainable software parts that were not mentioned.” https://www.goodreads.com/book/show/32192028-real-world-maintainable-software
Yourself. Duplicação deve ser evitada. Além de aumentar consideravelmente o trabalho, pois as alterações também tem que serem feitas nas cópias, é uma causa forte de bugs de regressão. 3
acoplamento são mais fáceis de modificar. Se você não pode explicar o que a classe faz de maneira simples, ela representa mais que um conceito, ou um muito genérico ou abstrato. 5
invés de classes e módulos, componentes Alto nível de abstração para evitar que os componentes saibam muito dos detalhes de implementação, deixando eles mais independente, reduzindo claro, as dependências. 6
consequência das outras regras. Uma maneira de alcançar isso é evitar “future proofing”, que é adicionar à aplicação funcionalidades (que inclusive podem ser relacionadas com otimização prematura) que ainda não foram requisitadas mas que os desenvolvedores acham que vão ser necessárias no futuro. Como recomendação para sistemas Java, o SIG estabelece no máximo 175.000 (vixi!) linhas de código. 8
indentação ou nomes de variáveis. É antes de mais nada, uma questão de compreensão. O código deve mostrar claramente qual sua finalidade e evitar dúvidas ou mesmo armadilhas, permitindo que qualquer um que o ler vai entender rapidamente e será capaz de o modificar sem fazer erros descuidados. 10