Меня поместили в проект, в котором есть беспорядочный класс, который пишет кнопки на странице. Приложение представляет собой менеджер документов и имеет всплывающий список кнопок, таких как загрузка, электронная почта и печать. В зависимости от роли пользователя и состояния документа отображаются разные кнопки.
Среди других WTF есть что-то вроде этого:
bool showEditButton = document.docTypeId == documentEnum.docType.text &&
( document.statusId == documentEnum.docStatus.Editable || (user.UserStatus == userEnum.Status.SuperUser) || ( user.UserID == document.CreatedByUserId ) )
И так далее, и тому подобное, пока я не смогу понять, что происходит.
Я не знаю, является ли это просто побочным эффектом более глубокого архитектурного недостатка, или есть хороший метод для проверки комбинации разрешений и значений состояния. Должен ли я просто поместить все эти безумные условия в метод и просто забыть об этом? Впрочем, следующему программисту не выгодно наследовать проект.