C’était peut-être une question difficile il ya quelques années, mais il n’est plus difficile pour l’OMI d’éliminer la complexité accidentelle de nos jours.
Ce que Kent Becks a dit de lui-même à un moment donné: "Je ne suis pas un bon programmeur, je suis juste un bon programmeur avec de bonnes habitudes."
Deux choses méritent d’être soulignées, IMO: il se considère lui-même comme un programmeur et non comme un architecte. Il met l’accent sur les habitudes et non sur la connaissance.
La manière de Feynman de résoudre des problèmes difficiles est la seule façon de le faire. La description n'est pas forcément très facile à comprendre, je vais donc la disséquer. La tête de Feynman n'était pas seulement pleine de connaissances, elle était aussi pleine de compétences pour appliquer ces connaissances. Lorsque vous avez les connaissances et les compétences nécessaires pour l'utiliser, la résolution d'un problème difficile n'est ni difficile ni facile. C'est le seul résultat possible.
Il y a une manière complètement non magique d'écrire du code propre, qui ne contient pas de complexité accidentelle, et qui est la plupart du temps similaire à ce que Feynman a fait: acquérir toutes les connaissances requises, s'entraîner à s'habituer à le faire fonctionner, plutôt que de simplement le garder caché Dans un coin de votre cerveau, écrivez un code vierge.
Maintenant, beaucoup de programmeurs ne sont même pas au courant de toutes les connaissances nécessaires pour écrire du code en clair. Les jeunes programmeurs ont tendance à abandonner leurs connaissances sur les algorithmes et les structures de données, et la plupart des programmeurs plus âgés ont tendance à l'oublier. Ou grande notation O et analyse de la complexité. Les programmeurs plus âgés ont tendance à rejeter les motifs ou les odeurs de code - ou même à ignorer leur existence. La plupart des programmeurs de toutes les générations, même s'ils connaissent les modèles, ne se souviennent jamais du moment exact où utiliser et des composants de pilotes. Peu de programmeurs, quelle que soit leur génération, évaluent constamment leur code par rapport aux principes SOLID. De nombreux programmeurs mélangent tous les niveaux d'abstraction possibles. Je ne suis pas au courant qu'un collègue programmeur, pour le moment, évalue constamment son code par rapport aux stenches décrites par Fowler dans son livre de refactoring. Bien que certains projets utilisent un outil de métrique, la métrique la plus utilisée est la complexité, d'une manière ou d'une autre, tandis que deux autres métriques - couplage et cohésion - sont dans une large mesure ignorées, même si elles sont très importantes pour le code épuré. Un autre aspect que presque tout le monde ignore est la charge cognitive. Peu de programmeurs considèrent les tests unitaires comme de la documentation, et encore moins d’entre eux qui se rendent compte qu’il est difficile d’écrire ou de nommer des tests unitaires est encore une puanteur de code, qui indique généralement une mauvaise factorisation. Une infime minorité est consciente du mantra de la conception axée sur le domaine pour garder le modèle de code et le modèle de domaine métier aussi proches que possible les uns des autres, car les divergences sont vouées à créer des problèmes. Tous ces éléments doivent être pris en compte, tout le temps, si vous voulez que votre code soit propre. Et beaucoup d'autres dont je ne me souviens plus maintenant. la métrique la plus utilisée est la complexité, d'une sorte ou d'une autre, alors que deux autres métriques - couplage et cohésion - sont en grande partie ignorées, même si elles sont très importantes pour le code propre. Un autre aspect que presque tout le monde ignore est la charge cognitive. Peu de programmeurs considèrent les tests unitaires comme de la documentation, et encore moins d’entre eux sont conscients qu’il est difficile d’écrire ou de nommer des tests unitaires. Une infime minorité est consciente du mantra de la conception axée sur le domaine pour garder le modèle de code et le modèle de domaine métier aussi proches que possible les uns des autres, car les divergences sont vouées à créer des problèmes. Tous ces éléments doivent être pris en compte, tout le temps, si vous voulez que votre code soit propre. Et beaucoup d'autres dont je ne me souviens plus maintenant. la métrique la plus utilisée est la complexité, d'une sorte ou d'une autre, alors que deux autres métriques - couplage et cohésion - sont en grande partie ignorées, même si elles sont très importantes pour le code propre. Un autre aspect que presque tout le monde ignore est la charge cognitive. Peu de programmeurs considèrent les tests unitaires comme de la documentation, et encore moins d’entre eux sont conscients qu’il est difficile d’écrire ou de nommer des tests unitaires. Une infime minorité est consciente du mantra de la conception axée sur le domaine pour garder le modèle de code et le modèle de domaine métier aussi proches que possible les uns des autres, car les divergences sont vouées à créer des problèmes. Tous ces éléments doivent être pris en compte, tout le temps, si vous voulez que votre code soit propre. Et beaucoup d'autres dont je ne me souviens plus maintenant. alors que deux autres métriques - couplage et cohésion - sont en grande partie ignorées, même si elles sont très importantes pour le code épuré. Un autre aspect que presque tout le monde ignore est la charge cognitive. Peu de programmeurs considèrent les tests unitaires comme de la documentation, et encore moins d’entre eux sont conscients qu’il est difficile d’écrire ou de nommer des tests unitaires. Une infime minorité est consciente du mantra de la conception axée sur le domaine pour garder le modèle de code et le modèle de domaine métier aussi proches que possible les uns des autres, car les divergences sont vouées à créer des problèmes. Tous ces éléments doivent être pris en compte, tout le temps, si vous voulez que votre code soit propre. Et beaucoup d'autres dont je ne me souviens plus maintenant. alors que deux autres métriques - couplage et cohésion - sont en grande partie ignorées, même si elles sont très importantes pour le code épuré. Un autre aspect que presque tout le monde ignore est la charge cognitive. Peu de programmeurs considèrent les tests unitaires comme de la documentation, et encore moins d’entre eux sont conscients qu’il est difficile d’écrire ou de nommer des tests unitaires. Une infime minorité est consciente du mantra de la conception axée sur le domaine pour garder le modèle de code et le modèle de domaine métier aussi proches que possible les uns des autres, car les divergences sont vouées à créer des problèmes. Tous ces éléments doivent être pris en compte, tout le temps, si vous voulez que votre code soit propre. Et beaucoup d'autres dont je ne me souviens plus maintenant. Un autre aspect que presque tout le monde ignore est la charge cognitive. Peu de programmeurs considèrent les tests unitaires comme de la documentation, et encore moins d’entre eux sont conscients qu’il est difficile d’écrire ou de nommer des tests unitaires. Une infime minorité est consciente du mantra de la conception axée sur le domaine pour garder le modèle de code et le modèle de domaine métier aussi proches que possible les uns des autres, car les divergences sont vouées à créer des problèmes. Tous ces éléments doivent être pris en compte, tout le temps, si vous voulez que votre code soit propre. Et beaucoup d'autres dont je ne me souviens plus maintenant. Un autre aspect que presque tout le monde ignore est la charge cognitive. Peu de programmeurs considèrent les tests unitaires comme de la documentation, et encore moins d’entre eux sont conscients qu’il est difficile d’écrire ou de nommer des tests unitaires. Une infime minorité est consciente du mantra de la conception axée sur le domaine pour garder le modèle de code et le modèle de domaine métier aussi proches que possible les uns des autres, car les divergences sont vouées à créer des problèmes. Tous ces éléments doivent être pris en compte, tout le temps, si vous voulez que votre code soit propre. Et beaucoup d'autres dont je ne me souviens plus maintenant. s mantra pour garder le modèle de code et le modèle de domaine métier aussi proches que possible l'un de l'autre, car les divergences sont vouées à créer des problèmes par la suite. Tous ces éléments doivent être pris en compte, tout le temps, si vous voulez que votre code soit propre. Et beaucoup d'autres dont je ne me souviens plus maintenant. s mantra pour garder le modèle de code et le modèle de domaine métier aussi proches que possible l'un de l'autre, car les divergences sont vouées à créer des problèmes par la suite. Tous ces éléments doivent être pris en compte, tout le temps, si vous voulez que votre code soit propre. Et beaucoup d'autres dont je ne me souviens plus maintenant.
Vous voulez écrire du code propre? Il n'y a pas de magie requise. Allez simplement apprendre tout ce qui est nécessaire, puis utilisez-le pour évaluer la propreté de votre code et modifiez-le jusqu'à ce que vous soyez satisfait. Et continuez à apprendre - les logiciels sont encore jeunes et les nouvelles connaissances et connaissances sont acquises à un rythme soutenu.