@CodeComplete9090

Как происходит семантическое нарушение инкапсуляции?

Читаю Code complete (Совершенный код) и не могу понять как нарушается инкапсуляция семантически? Можете привести примеры проблемы и её решение?
Добавлю пару примеров из книги:
решить не вызывать метод InitializeOperations() Класса A, потому что метод PerformFirstOperation() Класса A вызывает его автоматически;
не вызвать метод database.Connect() перед вызовом метода employee.Retrieve(database ), потому что знаете, что при отсутствии соединения с БД метод employee.Retrieve() его установит;
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 1
ruddy22
@ruddy22
Спасение утопающих — дело рук самих утопающих
Если коротко:
Не стоит делать лишних движений.

Если не так коротко:
Не стоит делать лишних движений, если они уже где-то реализованы конкретно для вашего случая. Говоря о примерах из книги, то не нужно "заранее" инициализировать что либо, если в следующей строчке будет вызвана эта инициализация или подключение к базе. Т.к. очевидно, что дважды инициализировать что-либо, как минимум, глупо.

В книге всё описано достаточно подробно. Даны хорошие советы, которые достаточно часто ломаются о трудовые будни. Когда, работая с кодом гипотетического Васи, сталкиваешься с тем, что метод PerformFirstOperation() Класса A не вызывает метод InitializeOperations() Класса A, а даже не проверяет "готовность" каких-либо данных. Поэтому все зависит от ситуации.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы