Принцип единой ответственности и проекты (Visual Studio / C #) - как вы организуете свои проекты? - PullRequest
1 голос
/ 24 февраля 2012

Я пытался действительно понять SRP и SOLID и полностью понять, почему люди применяют его.Я все еще пытаюсь овладеть "искусством" SRP самостоятельно.Приступая к этому, совет, который я понимаю больше всего, таков: «Напишите, какова цель вашего класса. Если в предложении есть слова и, но, кроме того, это делает слишком много. Поэтому я мог бы написать класс с именем« ActiveDirectoryHelper »."(вонючий, я знаю), который имеет CreateComputerObject, FindComputerObject и DeleteComputerObject. Я думаю, что это должно быть разбито на три отдельных класса, нет?

Но что более важно, если я неукоснительно применил SRP, я не получу десяткии десятки файлов классов .cs в моем проекте Visual Studio / C #? Если это так и если это так, как вы организовываете свои проекты?

Большое спасибо

1 Ответ

2 голосов
/ 24 февраля 2012

Так что я мог бы написать класс с именем "ActiveDirectoryHelper" (вонючий, я знаю), который имеет CreateComputerObject, FindComputerObject и DeleteComputerObject.Я думаю, что это должно быть разбито на три отдельных класса, нет?

Согласно классу SRP должна быть только одна причина для изменения.Например, если вы ожидаете, что в какой-то момент вы захотите изменить логику создания для ComputerObject, и это изменение не повлияет на методы Find * и Delete *, вы должны извлечь CreateComputerObject в отдельный класс: ComputerObjectFactory.

Но что более важно, если бы я неукоснительно применил SRP, получу ли я десятки и десятки файлов классов .cs в моем проекте Visual Studio / C #?

Это удивительно частый вопрос / аргумент, который вы слышите на земле РС, где некоторые люди предпочитают гигантские «классы богов» и используют регионы кода для организации.Большое количество занятий, как правило, очень хороший знак.В большинстве случаев это делает ваш код более читабельным, тестируемым и организованным.В конце концов, C # - это объект -ориентированный язык, так что не бойтесь создавать больше классов.

Если так, и если так и должно быть, как это сделать?Вы организовываете свои проекты?

Использовать, например, пространства имен и папки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...