четверг, 19 июля 2007 г.

Антипаттерны "God Object" и "Big Hairy Object"

God Object
Wikipedia: http://en.wikipedia.org/wiki/God_object

“God Object” – это объект, который знает слишком много или делает слишком много.

Программисты создают Объект-Бога, когда не могут (не хотят) нормально провести объектно-ориентированную композицию. Объекта-Бога невозможно покрыть юнит-тестами, потому что у него огромное количество состояний и «завязок» на внешние сущности. Нельзя проверить какой-то один аспект его функциональности, потому что они намертво связаны с остальными.


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


Решение – покрывать юнит-тестами по чуть-чуть и делать рефакторинг. Желательно использовать для этого автоматизированные средства, такие как JetBrains ReSharper.

Big Hairy Object

Wikipedia: http://en.wikipedia.org/wiki/Big_Hairy_Object


Почти то же самое, но с огромным числом свойств и методов, напиханных «абы как», безструктурно.

См также:
Другие антипаттерны: http://en.wikipedia.org/wiki/Anti-pattern

Комментариев нет: