Если у вас был коллега, который не понимал преимуществ Разделения проблем или не понимал этого достаточно, чтобы последовательно применять его в своей повседневной работе, как бы вы объяснили им это?
33
Если у вас был коллега, который не понимал преимуществ Разделения проблем или не понимал этого достаточно, чтобы последовательно применять его в своей повседневной работе, как бы вы объяснили им это?
Ответы:
Представьте, что у вас есть программа, которая была выпущена. Приходит клиент и предлагает заплатить вам за усовершенствование одной из его функций. Чтобы получить деньги, вам нужно будет изменить программу, чтобы добавить новую функцию. Некоторые вещи, которые будут влиять на размер вашей прибыли:
Разделение проблем помогает вам получить более положительные ответы на эти вопросы.
источник
Посмотрите на больницу и подумайте обо всех различных ролях, которые участвуют в оказании медицинской помощи пациенту: медсестры-сортировщики, врачи, медицинские помощники, технические специалисты, канцелярский персонал, кафетерий и т. Д.
Есть ли один человек, который знает, как все эти люди выполняют свою работу? Нет, потому что это было бы подавляющим. Они должны разделять разные обязанности на отдельные роли, а точки соприкосновения между этими ролями очень специфичны.
источник
Если он / она работает в офисе, возьмите его в качестве примера, объясните роль каждого сотрудника в этом офисе и спросите его, что произойдет, если эти сотрудники не будут разделены в зависимости от их работы?
источник
Я бы посмотрел на то, как он не смог применить SoC в своем коде / дизайне, и превратил это в реальный пример, с которым он может иметь дело, и это явно нежелательно.
Например, если у него есть класс, где клиенту нужно предоставить несколько частей информации, которые не имеют отношения к этим клиентам, то я бы использовал аналогию с пекарней, где вы должны приносить свои собственные зерна и дрожжи, если вы хотите купить хлеб.
источник
Одним из примеров может быть html-разработчик, который хочет разделить html, css и javascript на отдельные файлы. Таким образом, вы можете изменить внешний вид чего-то, скажем, просто изменив CSS или поведение чего-либо, изменив файл javascript, который загружается отдельно. Если у вас есть адаптивный или адаптивный сайт, эта парадигма работает хорошо, так как вы можете загружать различные CSS или JavaScript в зависимости от области просмотра пользователя или пользовательского агента. Однако, если вы измените html или шаблон, есть вероятность, что css или javascript могут сломаться. Эти отдельные проблемы также могут быть зависимыми.
Другой подход заключается в объединении всего вашего CSS JavaScript и HTML в группу компонентов или модулей. Это означает, что вы можете вносить изменения в один модуль, и это не должно влиять на другие компоненты или модули на той странице, на которой он выполняется, если он не связан. Здесь файлы css, js и html объединяются в один компонент, который можно тестировать модулем. Таким образом, разделение интересов происходит в форме отдельных атомных компонентов, которые могут быть проверены модулем, а не разделением элементов разметки, стиля и поведения. Этот второй подход больше подходит для создания более сложных веб-приложений.
редактировать. Поскольку я получил отрицательный ответ на этот комментарий, я подумал, что вернусь к нему и попытаюсь оценить некоторые из моих POV. К сожалению, любые отзывы здесь не особенно конструктивны, но я видел интересное обсуждение в другом месте, которое рассматривает React, текущую горячую технологию в веб-разработке, пример из реальной жизни и спрашивает, нарушает ли это разделение интересов или, в частности, если оно нарушает одно из принцип методики ориентированного проектирования твердого объекта Feather.
Техническая перспектива разработчика JavaScript
Перспектива дизайнера UX / UI
Перспектива команды
https://hashnode.com/post/does-react-really-violate-separation-of-concern-by-putting-html-and-js-in-a-single-file-cil3bn5hj0011a65347rsdut0
Также на странице есть ссылка на интересную презентацию от Пита Ханта из Facebook, где он рассказывает о компонентах, а не о шаблонах, и разделяет проблемы в языковом приложении, а не разделяет проблемы структуры, то есть шаблоны, css и javascript и т.п.
Что касается выделения ваших проблем на языке вашего приложения, это может включать использование различных шаблонов для разделения или разделения вашего кода в модульную форму, которая может быть протестирована модулем и т. Д.
Таким образом, чтобы подвести итог, разделение проблем может зависеть от вашей роли или точки зрения, как уже упоминалось где.
источник