C'est très difficile à expliquer car simple ne signifie pas la même chose pour tout le monde.
Exemple. Certains développeurs pensent que ?:
c'est simple mais d'autres pensent qu'une if
déclaration est meilleure. Quand c'est à ce niveau, vous ne pouvez pas plaire à tout le monde.
En général, simple signifie sans complexité . Pour comprendre la simplicité, nous devons comprendre la complexité.
Il existe deux types de complexité:
La complexité essentielle fait référence à une situation dans laquelle toutes les solutions raisonnables à un problème doivent être compliquées (et éventuellement déroutantes) car les solutions "simples" ne résoudraient pas correctement le problème. -- Wikipédia
La complexité accidentelle est la complexité qui survient dans les programmes informatiques ou leur processus de développement (programmation informatique) qui n'est pas essentielle au problème à résoudre. -- Wikipédia
Vous pouvez vérifier la complexité essentielle avec les questions suivantes:
Cette solution est-elle simple? Puis-je l'expliquer à mes pairs en quelques minutes et ils l'obtiennent? Existe-t-il une solution plus simple au problème? Si oui, y a-t-il des compromis entre la solution compliquée et la simple? Pouvons-nous vivre avec ces compromis? Par exemple, de nombreux programmeurs font une erreur de micro-optimisation de tout et leur solution (ainsi que le code) devient trop compliquée.
Vérifier votre complexité accidentelle:
Le code est-il simple? Si j'y reviens dans trois mois, combien de temps me faudra-t-il pour créer le contexte dans mon cerveau afin que je puisse faire le changement que je dois faire? Est-ce que tout dans mon code source a un objectif clair et il le transmet efficacement à moi et aux autres développeurs ? Est-ce difficile de tester mon code? Habituellement, plus votre code est compliqué, plus il est difficile de faire des tests unitaires, donc j'utilise généralement cela comme une mesure de la complexité. Vous voulez généralement de petites classes et méthodes bien nommées et ciblées. Les modèles de conception vous aident généralement à les atteindre également.
Si vous souhaitez utiliser un modèle de conception simplement parce que vous venez de le lire, cela va probablement introduire une complexité accidentelle. Si vous voulez mettre quelque chose parce que vous pensez que c'est intelligent, cela introduira probablement une complexité accidentelle.
J'espère que cela aide et n'oubliez pas: simple ne signifie pas FACILE .