La différence entre le Principe de Responsabilité Unique et la Séparation des Préoccupations
Quelle est la différence entre le Principe de Responsabilité Unique et la Séparation des Préoccupations?
Vous devez vous connecter pour publier un commentaire.
De ici.
La séparation des Préoccupations vs Principe de Responsabilité Unique ( SoC vs PRS )
De l'article lié:
La séparation des Préoccupations (SoC) – est le processus de rupture d'un programme d'ordinateur en différentes fonctions qui se chevauchent dans la fonctionnalité aussi peu que possible. Une préoccupation est de toute pièce d'intérêts ou de se concentrer dans un programme. Généralement, les préoccupations sont synonymes avec des caractéristiques ou des comportements.
http://en.wikipedia.org/wiki/Separation_of_concerns
Principe de Responsabilité unique (SRP) – chaque objet doit avoir une seule responsabilité, et que tous ses services devraient être étroitement alignée sur celle de la responsabilité. À un certain niveau de Cohésion est considéré comme synonyme de PRS.
http://en.wikipedia.org/wiki/Single_responsibility_principle
Seule Responsabilité que les états qu'un Objet soit responsable d'une unité de travail.
Séparation des Préoccupations précise que les demandes devraient être divisé en modules dont les fonctionnalités se chevauchent aussi peu que possible.
Similaire, les résultats de fin d'...légèrement différentes applications.
À mon avis, Principe de Responsabilité Unique est l'un des outils/expressions idiomatiques pour réaliser la Séparation des Préoccupations.
Le Principe de Responsabilité Unique et la Séparation des Préoccupations sont vraiment la même chose.
Sûr que vous pouvez obtenir enliser dans un débat académique en essayant de démêler une sorte de différence entre les deux, mais pourquoi? Pour toutes fins utiles, ils décrivent la même chose. Le plus gros problème est que les gens sont tellement pris dans le fait de vouloir savoir exactement ce qu'est une "préoccupation" et à la "responsabilité" sont peut-être manquer l'important idée derrière la SRP et de la SoC.
Cette idée est tout simplement de diviser votre base de code en couplage lâche parties isolées. Cela permet à plusieurs développeurs de travailler sur les différentes parties sans affecter les uns des autres, il permet aussi au développeur de modifier une partie isolée sans casser l'autre.
Cela est appliqué au niveau du module, par exemple MVC est un modèle d'architecture la promotion de la SRP et de la SoC. Le code est divisé en isolé modèles, vues et contrôleurs. De cette façon, la modification d'un point de vue qui peut être fait indépendamment d'un modèle. Les deux les deux ne sont pas terrible et entrelacés.
À un niveau inférieur, ce qui devrait être appliqué à des catégories trop. Au lieu de mettre des dizaines de méthodes dans une classe unique, de diviser le code en plusieurs. Pour les mêmes raisons.
Aussi même au niveau de la méthode, de fractionner les grandes méthodes de plus petite taille méthodes.
En principe. SRP est un principe, pas une règle, de sorte que vous n'avez pas à (lire: ne peut pas/ne devrait pas) suivi religieusement à l'extrême. Cela ne signifie pas aller trop loin et de n'avoir qu'un seul sept méthode de la ligne dans chaque classe par exemple. Cela signifie simplement un principe général de la séparation du code en parties isolées. Le point est, il conduira à une meilleure base de code et plus stable.
La séparation des préoccupations (SoC). Divisez votre application en fonctions distinctes avec aussi peu de chevauchement de fonctionnalité que possible. (Microsoft).
“Préoccupation” = “particularité” = “section distincte”
“Préoccupation” fonctionne à deux niveaux haut et bas
Principe de responsabilité unique déclare que tous les module ou classe doit avoir la responsabilité sur une seule partie de la les fonctionnalités fourni par le logiciel, et que cette responsabilité devrait être entièrement encapsulé par la classe. Tous ses services doit être étroitement alignée sur celle de la responsabilité. (Définition de Wikipedia)
“Responsabilité” = “de raison de changer” changer quoi?“, une seule partie de la de la fonctionnalité fournie par le logiciel” = Unité de Base
Conclusion
Principe de Responsabilité unique fonctionne sur les unités de base -> fonctionne au niveau de l'
La séparation des Préoccupations fonctionne à deux niveaux haut et bas
SRP et SoC travailler ensemble pour la séparation des préoccupations. Ils sont
exactement le même à faible niveau,
La séparation des Préoccupations est un processus; le Principe de Responsabilité Unique est une conception /architecture de la philosophie. Ils ne sont pas complètement disjoints, mais ils servent à des fins différentes.
Étant donné qu'aucune des réponses précédentes citer Robert Martin, qui a créé le Principe De Responsabilité Unique, je pense que plus de réponse faisant autorité est nécessaire ici.
Martin inspiration pour le programme de réorientation stratégique a été élaboré à partir de David Parnas, Edsger Dijkstra (qui a inventé le terme la Séparation des Préoccupations) et Larry Constantin (qui a inventé les termes Couplage et Cohésion). Martin consolidé leurs idées dans le SRP.
À la question initiale, la différence mineure entre la SRP et SoC, c'est que Martin a raffiné le terme préoccupations à consulter personnes.
Similaire, mais: SoC est liée à des préoccupations: décomposer un problème complexe en plusieurs préoccupations, PRS est d'avoir une responsabilité.
SRP et SOC travailler sur différents niveaux d'abstraction. Le but est, dans les deux cas, de réduire le couplage et renforcer la cohésion. Tout PRS fonctionne plus sur un niveau de l'objet, de la SOC peut aussi travailler sur la mise en œuvre de niveau de la fonction. Une fonction peut être mis en œuvre par un objet, mais aussi par plusieurs objets. Par conséquent, le couplage et la cohésion de ces deux principes peuvent différer.
J'ai essayé d'établir une comparaison entre la Séparation des préoccupations(SoC) et le Principe de Responsabilité Unique(SRP).
Différences
Le PRS est au niveau de la classe, mais le SoC est dans chaque programme d'ordinateur, l'abstraction ... ou parfois plan architectural.
Le PRS est sur la qualité de l' (comment ne pas que) en divisant votre domaine en cohésive des classes qui ont seulement une responsabilité (l'une des raisons pour changer). D'un autre côté, le SoC est un principe de conception de la séparation d'un contexte en sections distinctes, de telle sorte que chaque section répond à une préoccupation distincte(ce qui à ne pas faire), comme il y a beaucoup d'outils (par exemple des classes, des fonctions, des modules, des packages, ...) pour atteindre cet objectif, différents niveaux.
Le concept de la SRP est basée sur la cohésion (forte cohésion), tandis que le SoC est proche de Molecularity, diviser pour régner (D&C), ... dans chaque niveau d'abstraction.
SoC est un bon principe de conception pour faire face à la complexité, tels que l'abstraction considérant que, pour atteindre seul responsable de classes, vous pouvez utiliser SoC principe comme une excellente solution. Aussi, un moyen de savoir qu'une classe a plus d'un responsable est si vous pouvez extraire une autre responsabilité(inquiétude) à partir de cette classe.
Similitudes
Réponse:
La séparation des Préoccupations (SoC) est un plus polyvalent en terme peut être appliqué au niveau du système ou à des niveaux inférieurs, tels que les classes (ou même les méthodes au sein d'une classe)
Principe de Responsabilité unique (SRP) est utilisé pour discuter de SoC à la baisse des niveaux, par exemple dans une classe
Façons de penser:
Au niveau bas, SoC et PRS sont synonymes. Donc on peut dire SRP est redondant terme - ou que les SoC ne doit être utilisé pour discuter du système de niveau
(1), le terme SoC est quelque peu ambiguë. Vous avez besoin du contexte pour savoir si la discussion est d'environ de haut niveau SoC de niveau ou de niveau inférieur SoC
De se rappeler que SRP) est le terme que pour les niveaux inférieurs, pensez à ceci: dans le langage courant, une "responsabilité" est généralement un bien définis chose qui peut être lié à un code spécifique, alors que les "préoccupations" sont généralement le genre de vague et peut englober d'un tas de choses liées, ce qui est peut-être pourquoi le SoC est un ajustement plus naturel pour des discussions sur le système de niveau de est PRS
SoC est, en un sens, plus exigence/principe de PRS car il s'applique au niveau du système, et pour être vraiment réalisé au niveau du système doit également être utilisés dans le développement des composants du système. C'est, un haut niveau de SoC implique décent SoC/SRP au niveau inférieur - mais l'inverse n'est pas vrai, c'est, niveau inférieur SoC/SRP n'implique pas la SoC ou quoi que ce soit pour le niveau supérieur, jamais l'esprit de l'englobant système. Pour un exemple de SoC/SRP qui est atteint au niveau de la méthode, mais alors violé au niveau de la classe, découvrez cette Artur Trosin du blog.