Isso é muito complicado de explicar, porque simples não significa a mesma coisa para todos.
Exemplo. Alguns desenvolvedores acham que isso ?:é simples, mas outros acham que uma ifdeclaração é melhor. Quando chegar a este nível, você não pode agradar a todos.
Em geral, simples significa sem complexidade . Para entender a simplicidade, precisamos entender a complexidade.
Existem dois tipos de complexidade:
Complexidade essencial refere-se a uma situação em que todas as soluções razoáveis para um problema devem ser complicadas (e possivelmente confusas) porque as soluções "simples" não resolveriam adequadamente o problema. - Wikipedia
Complexidade acidental é a complexidade que surge nos programas de computador ou em seu processo de desenvolvimento (programação de computadores), que não é essencial para o problema a ser resolvido. - Wikipedia
Você pode verificar a complexidade essencial com as seguintes perguntas:
Esta solução é simples? Posso explicar isso para meus colegas em alguns minutos e eles entenderam? Existe uma solução mais simples para o problema? Se sim, existem vantagens e desvantagens entre a solução complicada e a solução simples? Podemos viver com essas trocas? Por exemplo, muitos programadores cometem um erro ao otimizar tudo e sua solução (e o código também) se torna excessivamente complicada.
Verificando sua complexidade acidental:
O código é simples? Se eu voltar em três meses, quanto tempo levarei para construir o contexto em meu cérebro para que eu possa fazer a mudança que preciso fazer? Tudo no meu código-fonte tem um objetivo claro e transmite esse objetivo efetivamente para mim e para outros desenvolvedores ? Quão difícil é testar meu código? Geralmente, quanto mais complicado é o seu código, mais difícil é o teste de unidade, por isso geralmente uso isso como uma medida de complexidade. Você geralmente deseja classes e métodos pequenos, bem nomeados e focados. Os padrões de design geralmente também ajudam você a alcançá-los.
Se você deseja usar um padrão de design apenas porque acabou de ler sobre ele, provavelmente introduzirá uma complexidade acidental. Se você deseja colocar algo porque acha que é inteligente, provavelmente introduzirá complexidade acidental.
Espero que isso ajude e não esqueça: Simples não significa FÁCIL .