2016-02-19 3 views
1

В пространстве имен System.Data.Entity есть класс DbFunctions. Он имеет почти 100 функций, которые обрабатывают манипуляции строк, вычисления DateTime и статистические функции. На SO есть много вопросов по SRP, так что считайте, что это подходящий форум. Wikipedia определяет SRP следующим образом:Нарушает класс DbFunctions SRP

Единый ответственности принцип гласит, что каждый модуль или класс должен нести ответственность за одной части функциональности , предоставляемой программным обеспечением, и что ответственность должна быть полностью инкапсулированный классом , Все его услуги должны быть четко выровнен с этой ответственностью

Мне кажется, что DbFunctions является нарушителем.

При определении того, что представляет собой цель класса, многие люди выступают за подсчет количества «и», которые вы используете в определении. Более одного, и вы можете быть в нарушении СРП. По моему подсчету, по крайней мере 3 в DbFunctions. Является ли мое понимание SRP ошибочным или слишком буквальным? Я знаю, что всегда есть крайники, но это, на мой взгляд, похоже, что это нарушает SRP. Это, конечно же, не уменьшает ультра-полезность класса.

Соответствует ли этот класс стандарту SRP?

+0

Downvote? Пожалуйста ... нет ничего плохого в этом вопросе. Я много размышлял и изучал предмет и искал значимые ответы. –

+0

Вопрос действительно показывает хорошее количество мыслей и исследований, но вы разместили его на неправильном сайте. SO не относится к конкретным вопросам программирования, а это не так. –

+1

@MadPhysicist ... У меня были смешанные эмоции о том, где писать. На SO есть много основанных на мнении вопросов SRP, поэтому я решил опубликовать здесь. Действительно, большинство всего, что SOLID связано с мнениями, и есть много сообщений SO по этому вопросу. Если администраторы SO не согласны со мной, может ли кто-то перейти на соответствующий форум? –

ответ

1

Я не думаю, что это нарушает SRP. Ниже определение дано в MSDN, который

Обеспечивает общеязыковой среды выполнения (CLR) методы, открывающие EDM канонические функции для использования в DbContext или ObjectContext LINQ к Entities запросов.

Ответственность в вышеприведенном определении заключается в том, чтобы представить EDM Канонические функции для использования в Linq К SQL-запросам, которые являются единой ответственностью.

+1

Как насчет знакомого класса «Менеджер», который предоставляет «связанные» функции? Наверное, SRP, обычно нет. –

+0

Почему вы думаете, что «SOLID» - волшебная пуля, и все программное обеспечение должно быть построено с соблюдением 100%? Игнорирование того, что вы просто не видите отношения, не означает, что оно не существует. –

+1

@MatthewWhited ... Я ничего не говорил о соблюдении 100% или SOLID - волшебная пуля. Я просто ставил под сомнение мое понимание, и другие, я думаю, о СРП. –

Смежные вопросы