Разница между принципом единой ответственности и разделением интересов - PullRequest
67 голосов
/ 12 ноября 2009

В чем разница между принципом единой ответственности и разделением интересов?

Ответы [ 12 ]

2 голосов
/ 16 июля 2014

Аналогично, но: SoC связан с проблемами: чтобы разбить сложную проблему на несколько проблем, SRP должен иметь только одну ответственность.

0 голосов
/ 08 мая 2019

Ответ:

Разделение проблем (SoC) - более универсальный термин - его можно применять на системном уровне или на более низких уровнях, таких как классы (или даже методы внутри класса)

Принцип единой ответственности (SRP) используется для обсуждения SoC на более низких уровнях, например в классе


Способы обдумать это:

  1. На низком уровне SoC и SRP являются синонимами. Таким образом, можно сказать, что SRP является избыточным термином или что SoC следует использовать только для обсуждения системного уровня

  2. Учитывая (1), термин SoC несколько неоднозначен. Вам нужен контекст, чтобы знать, идет ли речь о SoC высокого уровня или SoC более низкого уровня

  3. Чтобы помнить, что SRP - это термин только для более низких уровней, подумайте об этом: в повседневном языке «ответственность» - это, как правило, четко определенная вещь, которую можно связать с конкретным кодом, тогда как «проблемы» обычно довольно расплывчато и может охватывать множество связанных вещей, поэтому, возможно, именно поэтому SoC более естественно подходит для обсуждения системного уровня, чем SRP

  4. SoC в некотором смысле является более сильным требованием / принципом, чем SRP, потому что оно применяется на системном уровне, и для его подлинного достижения на системном уровне также необходимо использовать при разработке системные компоненты. То есть высокий уровень SoC подразумевает достойный SoC / SRP на более низких уровнях - но обратное неверно, то есть более низкий уровень SoC / SRP не подразумевает SoC или что-либо еще для следующего более высокого уровня, не говоря уже о охватывающая система. Для примера SoC / SRP, который достигается на уровне метода, но затем нарушается на уровне класса, посмотрите это сообщение в блоге Артура Тросина .

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