Полагаю, большинство разработчиков имеют представление о многослойной архитектуре. У нас есть DAL (уровень доступа к данным), у нас есть BLL (уровень бизнес-логики), и где-то ближе к концу пути у нас есть наш пользовательский интерфейс. Если у вас есть проект, который каким-то образом следует этим принципам, продолжаете ли вы (или хотя бы пытаетесь) оставить / поместить вещи там, где они концептуально принадлежат? Меня особенно интересуют приложения для больших компаний, где вы работаете вместе со многими другими людьми. Очевидно, что вы можете делать все, что захотите, с вашим собственным игрушечным проектом, изобретать любую архитектуру и придерживаться ее. Это не так просто с большими проектами, в которых много людей участвовали в разработке программного обеспечения или в общем беспорядке.
Например, мне довелось увидеть такие вещи, как компоненты пользовательского интерфейса, идущие непосредственно в базу данных для извлечения некоторых «отсутствующих» дополнительных данных, которые BL не предоставляет, а также UI и BL, работающие с элементами низкого уровня, такими как поля таблицы, где, по моему мнению, они должны делегировать эти операции более низкому уровню, а именно DAL. Было особенно грустно, когда после обсуждения этого вопроса со старшим разработчиком я увидел, что он вообще не видит проблемы с этим.
Конечно, мы можем предположить, что я и тот, кто разделяет мою точку зрения, просто перфекционисты, но я ясно увидел очень неблагоприятное последствие в том, что в некоторых из моих задач мне потребовалось много времени, чтобы проследить всю «параллель» маршруты, по которым данные перемещаются в базу данных и из нее, и для определения того, на кого и каким образом теперь может влиять новая реализованная мной функциональность. На мой взгляд, это увеличение затрат на дальнейшую разработку / обслуживание, перевешивающее некоторую экономию, когда кто-то решил быстро взломать материал и закрыть задачу как можно скорее.
Являетесь ли вы проектами "чистыми" или они давно отказались от идеи держать четкую границу между слоями? Если вы все еще держите это правильно, как вы справляетесь с коллегами, которые не понимают этих вещей или не заботятся о них, просто создавая «нестандартные» решения и постоянно взламывая хаки? Или в какой-то момент вы перестали сражаться с ветряной мельницей и приняли это как свое наказание?
РЕДАКТИРОВАТЬ: Несколько удивлен, что не многие люди заинтересовались этой проблемой. Это знак больше всего пофиг?