И так читая книгу "Программист - прогматик" я наткнулся на упомянание закона Деметера и решил выяснить что это.
Закон деметера гласит:
Любой метод объекта должен обращаться только к методам, принадлежащим:
- тому же классу
- любым объектам, переданным в метод в качестве аргументов
- любым создаваемым им объектам
- любым непосредственно содержащимся объектам компонентов
Аналогия из жизни.
Если Вы хотите, чтобы собака побежала, глупо командовать ее ногами, лучше отдать команду собаке, а она уже разберется со своими ногами сама
Достоинства:
снижается связность, в результате получается код, который легче сопровождать, который содержит потенциально меньше ошибок.
Недостатки:
зачастую приходится писать множество методов-оберток, которые только лишь делегируют работу кому-то еще. Объекты становятся более громоздкими.
Другими словами, реализация данного закона в проекте позволит существенно сократить возможность возникновения ошибок (ошибки в классах и их методах легко отследить и исправить, гораздо сложнее отследить ошибки на стыках классов или объектов).
Но это же в свою очередь приводит к увеличению кода проекта.
Если все это сложить то применение закона оставляет программиста в выигрыше, так как на отлов и исправление ошибок уходит больше времени чем на написание некоей небольшой оболочки для методов.
Закон деметера гласит:
Любой метод объекта должен обращаться только к методам, принадлежащим:
- тому же классу
- любым объектам, переданным в метод в качестве аргументов
- любым создаваемым им объектам
- любым непосредственно содержащимся объектам компонентов
Аналогия из жизни.
Если Вы хотите, чтобы собака побежала, глупо командовать ее ногами, лучше отдать команду собаке, а она уже разберется со своими ногами сама
Достоинства:
снижается связность, в результате получается код, который легче сопровождать, который содержит потенциально меньше ошибок.
Недостатки:
зачастую приходится писать множество методов-оберток, которые только лишь делегируют работу кому-то еще. Объекты становятся более громоздкими.
Другими словами, реализация данного закона в проекте позволит существенно сократить возможность возникновения ошибок (ошибки в классах и их методах легко отследить и исправить, гораздо сложнее отследить ошибки на стыках классов или объектов).
Но это же в свою очередь приводит к увеличению кода проекта.
Если все это сложить то применение закона оставляет программиста в выигрыше, так как на отлов и исправление ошибок уходит больше времени чем на написание некоей небольшой оболочки для методов.
Комментариев нет:
Отправить комментарий
Поделиться своими мыслями...