Il y a beaucoup de discussions concernant les meilleures pratiques 1 en développement logiciel. J'ai vu au moins trois points majeurs faire l'objet de nombreuses discussions à la fois sur SE et ailleurs:
- Qu'est-ce qui constitue une meilleure pratique et pourquoi?
- Les meilleures pratiques valent-elles même la peine d'être discutées en premier lieu, car il est raisonnable d'affirmer qu'aucune pratique n'est une "meilleure" pratique?
- Quand faut-il renoncer à une meilleure pratique - ou peut-être à la plupart des meilleures pratiques - soit parce qu'elle ne semble pas applicable, soit en raison de contraintes externes (temps, argent, etc.) qui rendent le compromis impossible?
Quelque chose qui semble revenir beaucoup moins souvent, mais plus que jamais, est une notion de bon sens dans le développement de logiciels. L'expérience récente a de nouveau mis cette notion à l'esprit.
Mon impression initiale est que c'est une discussion différente des meilleures pratiques, mais avec peut-être une pollinisation croisée.
Quand je pense au bon sens en général, je pense à un ensemble de règles que vous avez soit repris, soit appris, qui vous donnent une base pour raisonner et prendre des décisions. Suivre le bon sens est un bon moyen de vous éviter de tirer sur toute votre jambe. Mais au-delà d'une base de référence assez faible, le bon sens cède la place à un besoin de prendre des décisions éclairées, et les décisions éclairées peuvent même l'emporter sur le bon sens lorsque les preuves semblent suffisamment convaincantes. Je joue peut-être un peu avec la définition ici, mais je pense qu'elle est assez proche pour diriger mon exemple.
Quand je pense au bon sens dans le développement de logiciels, je pense à toutes les règles d'hygiène de base pour empêcher une base de code de se dégrader rapidement en un gâchis incompréhensible. Par exemple, des choses comme: ne pas utiliser une seule structure globale pour maintenir et communiquer l'état dans un programme non trivial; ne pas utiliser de variables / méthodes / noms de classe qui ne sont que du charabia aléatoire; des choses qui ressemblent probablement à ce que nous avons appelé assez étroitement des anti-modèles. Lorsque l'application des meilleures pratiques de l'analogue pratique aux modèles d'apprentissage, l'application du bon sens pourrait être considérée comme l'analogue pratique de l'apprentissage des anti-modèles.
Dans cet esprit, je voudrais poser quelques questions pour lesquelles le fait de voir les réponses des autres pourrait m'aider à raisonner.
D'autres croient-ils qu'il existe une notion de bon sens dans le développement de logiciels? Serait intéressé de connaître le raisonnement de toute façon.
Si oui, est-ce une notion qui mérite d'être discutée? Est-ce quelque chose que nous devrions pousser autant que nous le faisons parfois avec les meilleures pratiques? Cela vaut-il la peine de pousser encore plus fort?
Si l'analogie avec les anti-modèles semble raisonnable, la règle générale est que les anti-modèles ne sont utilisés que s'il n'y a pas d'autre moyen, et même alors seulement dans des circonstances très limitées. Dans quelle mesure faut-il être flexible pour permettre à une base de code de s'écarter du bon sens? Il semble déraisonnable que la réponse soit "pas du tout", car parfois l'opportunité exige des écarts. Mais cela semble être un type d'argument différent de celui de savoir quand utiliser une «meilleure pratique». Ce n'est peut-être pas le cas; si vous ne le pensez pas, j'aimerais savoir pourquoi.
C'est beaucoup plus ouvert et peut-être digne d'une question de suivi qui lui est propre, quelles sortes de recommandations pourriez-vous suggérer qui semblent être des questions de bon sens?
D'autres réflexions sont également les bienvenues.
1 Je ferais peut-être mieux de les appeler «modèles de domaine récurrents», mais le nom «meilleures pratiques» est suffisamment courant pour que tout le monde sache ce qu'il en est, même s'il n'est pas d'accord. Si la «meilleure» partie vous dérange, imaginez que j'ai remplacé les «meilleures pratiques» par quelque chose de moins autoritaire.