- Писать NothingHandler-ы - дробить систему на абсурдное количество сущностей; делать иерархию классов по особенностям внутренней реализации.
- Писать AnythingHandler-ы - строить классы и методы, имеющие множество функций, и самостоятельно принимающие решения как обрабатывать данные. Это не совсем God-class - он имеет вполне определенное назначение, но берет на себя слишком много самостоятельности. Наподобие: "Ты мне только String дай, а я сам его через парсер прогоню, результат проанализирую, определю тип запроса и тип ресурса, сделаю все что нужно и верну монструозную конструкцию, которая способна описать любые вариации результатов". Результат, соответственно, приходиться обрабатывать столь же сложным образом, что ведет к тому, что весь код полон подобными Шивами четырехрукими, на все способными.
Пример реального класса, который жил в моем коде - NullWrapper. Люди со стороны заказчика сломали головы, пытаясь понять что это за штука, а я недоумевал почему они жалуются. Ведь в архитектуре, которую я наваял именно такая штука и была нужна - просто null уже использовался для другого случае (т.е. мне были нужны градации ответов в духе: "совсем нет", "нет", "скорее нет, чем да" и т.д.).
Что любопытно проект таки прошел все тесты - я сумел не запутаться в том, что сделал. Но потом весь код отправился на доработку. Более опытные люди построили архитектуру, а я теперь наращиваю мясо на данном скелете - пишу начисто тот же проект. И сейчас уже ясно вижу, что NullWrapper это действительно нонсенс, можно делать так, чтобы не появлялась необходимость в таких извращениях.
Что любопытно проект таки прошел все тесты - я сумел не запутаться в том, что сделал. Но потом весь код отправился на доработку. Более опытные люди построили архитектуру, а я теперь наращиваю мясо на данном скелете - пишу начисто тот же проект. И сейчас уже ясно вижу, что NullWrapper это действительно нонсенс, можно делать так, чтобы не появлялась необходимость в таких извращениях.
Комментариев нет:
Отправить комментарий