Подтвердить что ты не робот

Что такое разделение проблем?

Что такое разделение проблем?
Какая проблема?
Как можно разбить приложение на эти "разные проблемы"?

4b9b3361

Ответ 1

Обеспокоенность - это различные аспекты функциональности программного обеспечения. Например, "бизнес-логика" программного обеспечения вызывает озабоченность, и интерфейс, через который человек использует эту логику, является другим.

Разделение опасений сводит кодекс для каждой из этих проблем отдельно. Изменение интерфейса не требует изменения кода бизнес-логики и наоборот.

Шаблон проектирования Model-View-Controller (MVC) является прекрасным примером разделения этих проблем для лучшей ремонтопригодности программного обеспечения.

Для получения дополнительной информации:

Ответ 2

Вы знаете о HTML и CSS? Это разделение проблем прямо там.

HTML файл (возможно, XML) определяет структуру документа. Файл CSS определяет, как документ отображается на вашем экране.

Ответ 3

http://en.wikipedia.org/wiki/Separation_of_concerns

В информатике разделение проблем (SoC) - это процесс разбивки компьютерной программы на отдельные функции, которые как можно меньше перекрывают функциональность. Вызывает озабоченность любой интерес или фокус в программе. Как правило, проблемы являются синонимом функций или поведения. Прогресс в направлении SoC традиционно достигается посредством модульности и инкапсуляции с помощью скрытия информации.

Ответ 4

В википедии описано: http://en.wikipedia.org/wiki/Separation_of_concerns

Это значение, указанное в Принципе единой ответственности, что функция/класс/метод должна делать только одно. Чтобы он все это делал, делайте это хорошо и делайте это только.

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

Ответ 5

Википедия:

В информатике разделение проблем (SoC) - это процесс разбивки компьютерной программы на отдельные функции, которые как можно меньше перекрывают функциональность. Вызывает озабоченность любой интерес или фокус в программе. Как правило, проблемы являются синонимом функций или поведения. Прогресс в направлении SoC традиционно достигается посредством модульности и инкапсуляции с помощью скрытия информации.

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

Ответ 6

На самом деле не ответ на ваш вопрос, но если вас это интересует, существует связанный с ним шаблон проектирования Инверсия зависимостей.

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

Это особенно полезно при использовании макетных интерфейсов. Вы можете протестировать метод, передав mocks для другого класса с жестко закодированными значениями и ожидаемыми результатами.

Ответ 7

Этот принцип гласит, что данная проблема связана с различными проблемами, которые необходимо идентифицировать и разделять, чтобы справиться со сложностью, и для достижения требуемых технических характеристик качества, таких как надежность, адаптивность, ремонтопригодность и повторное использование. Ссылка

Ответ 8

Вообще говоря, это означает, что вы разделяете свое программное обеспечение на отдельные области, функциональность которых не перекрывается.

Википедия имеет хорошее объяснение:

http://en.wikipedia.org/wiki/Separation_of_concerns

Ответ 9

Данные могут быть представлены разными способами, и если мы можем перевести между представлениями, которые не имеют значения, какое представление мы используем, потому что мы должны иметь доступ к этим данным и манипулировать ими. Если бы у нас был универсальный переводчик языка, не имело бы значения, если бы кто-то сказал нам время на французском, немецком или арабском языках; наша способность переводить обеспечит нам знать время. В терминах данных есть три ключевых представления, которые важны:  физическое представление того, где и как хранятся данные;  логическое представление того, какие данные могут быть сохранены, его семантика и отношения с другими данными;  и внешнее представление, каким оно представляется пользователям. Предполагая, что можно переводить между различными представлениями, люди позволяют понять и использовать данные по-своему. Таким образом, на физическом уровне техник базы данных сможет оптимизировать физическое хранение данных независимо от логического описания или внешнего описания при условии, что они скорректировали сохраненное описание и перевод между представлениями. Разделяя эти проблемы, становится возможным сбор коллекций общего назначения, которые могут использоваться разными пользователями с различными требованиями и которые используют разные представления без необходимости дублирования данных. Мы будем пересматривать эти характеристики на протяжении всего курса