Mnémoniques pour un ensemble de principes de conception: responsabilité unique, ouvert-fermé, substitution Liskov, ségrégation d'interface, inversion de dépendance
Certains disent que si vous prenez les principes SOLIDES à l'extrême, vous vous retrouvez à la programmation fonctionnelle . Je suis d'accord avec cet article mais je pense que certaines sémantiques sont perdues dans la transition de l'interface / objet à la fonction / fermeture, et je veux savoir comment …
J'ai un module, disons «M», qui a quelques clients, disons «C1», «C2», «C3». Je veux répartir l'espace de noms du module M, c'est-à-dire les déclarations des API et des données qu'il expose, en fichier (s) d'en-tête de telle manière que - pour tout client, seules les données et les API …
J'entends beaucoup de praticiens TDD dire que l'un des avantages de TDD est qu'il oblige les développeurs à suivre les principes SOLIDES (responsabilité unique, ouvert-fermé, substitution Liskov, ségrégation d'interface et inversion de dépendance). Mais pour moi il suffit d'écrire quelques tests (test unitaire principalement) pour comprendre qu'il est important de …
Je viens de commencer avec RxJava , l'implémentation Java de ReactiveX (également connu sous le nom de Rx et Reactive Extensions ). Quelque chose qui m'a vraiment frappé était la taille massive de de RxJava Flowable classe : il a 460 méthodes! Être juste: De nombreuses méthodes sont surchargées, ce …
Contexte: Je développe un cadre de messagerie. Ce cadre permettra: envoi de messages via un bus de service abonnement aux files d'attente sur le bus de messages abonnement à des sujets sur un bus de messages Nous utilisons actuellement RabbitMQ, mais je sais que nous allons passer à Microsoft Service …
Par exemple, supposons que vous ayez un programme de jeu sur console, qui a toutes sortes de méthodes d'entrée / sortie vers et depuis la console. Serait - il intelligent de les garder tous en une seule inputOutputclasse ou les décomposer à des classes plus spécifiques comme de startMenuIO, inGameIO, …
Je comprends l'intention du principe ouvert-fermé. Il est destiné à réduire le risque de casser quelque chose qui fonctionne déjà en le modifiant, en vous disant d'essayer de l'étendre sans le modifier. Cependant, j'ai eu du mal à comprendre comment ce principe est appliqué dans la pratique. À ma connaissance, …
Lors de la lecture d'articles sur les FAI, il semble y avoir deux définitions contradictoires des FAI: Selon la première définition (voir 1 , 2 , 3 ), le FAI déclare que les classes implémentant l'interface ne devraient pas être forcées d'implémenter des fonctionnalités dont elles n'ont pas besoin. Ainsi, …
Inspiré par cette réponse: Le principe de substitution de Liskov exige que Les conditions préalables ne peuvent pas être renforcées dans un sous-type. Les post-conditions ne peuvent pas être affaiblies dans un sous-type. Les invariants du supertype doivent être conservés dans un sous-type. Contrainte d'historique (la "règle d'historique"). Les objets …
Une classe LinkedList existe avec des fonctions telles que add_first (), add_last (), add_after (), remove_first (), remove_last () et remove () Il existe maintenant une classe Stack qui fournit des fonctionnalités telles que push (), pop (), peek () ou top (), et pour implémenter ces méthodes, elle étend …
Je commence tout juste à explorer SOLID et je ne sais pas si la lecture à partir de fichiers et l'écriture dans des fichiers sont la même responsabilité. La cible est du même type de fichier; Je veux lire et écrire des .pdf dans ma candidature. L'application est en Python …
Il y a quelque temps, j'ai lu, sur une réponse Stack Overflow que je ne trouve pas, une phrase qui expliquait que vous devriez tester les API publiques, et l'auteur a dit que vous devriez tester les interfaces. L'auteur a également expliqué que si une implémentation de méthode changeait, vous …
J'essaie d'expliquer le principe d'inversion de dépendance à mes collègues (pour la plupart juniors). Comment définir laquelle est la «politique de haut niveau» et laquelle est le «détail de bas niveau» dans un logiciel? Par exemple, si notre logiciel automatise le flux de travail de plusieurs applications métier, pourquoi disons-nous …
Je fais des tests unitaires et dans l'une de mes classes, je dois envoyer un courrier à partir d'une des méthodes, donc en utilisant l'injection de constructeur j'injecte une instance de Zend_Mailclasse qui est dans le framework Zend. Maintenant, certaines personnes soutiennent que si une bibliothèque est suffisamment stable et …
Je suis assez nouveau sur les principes de conception SOLID . Je comprends leur cause et leurs avantages, mais je n'arrive pas à les appliquer à un projet plus petit que je souhaite refactoriser comme un exercice pratique pour utiliser les principes SOLIDES. Je sais qu'il n'est pas nécessaire de …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.