Только что провел отличную беседу с коллегой, которая помогла мне понять проблемы, связанные с внедрением правил как кода, с которыми я раньше не сталкивался.

Цель «Правил как кодекса» состоит в том, чтобы написать кодировку законодательства, максимально пригодную для повторного использования. Это означает, что нужно избегать искушения поместить в кодировку правил то, что имеет смысл включать только в контексте конкретного приложения.

Чего я не осознавал, пока не поговорил сегодня со своим коллегой, так это того, что это дает вам только повторное использование, а не ремонтопригодность. Чтобы получить выгоду от удобства сопровождения, вам также нужно избегать искушения реализовать юридическую логику в приложении.

Сегодняшний пример был чем-то вроде «Я уже знаю, каким будет ответ на этот запрос, поэтому я просто пропущу его, чтобы работать быстрее».

Это может быть оправдано в определенных сценариях, когда производительность имеет решающее значение, и маловероятно, что законодательство изменится каким-либо значимым образом. Но вообще говоря, это «Правила как запах кода».

Вам не нужно ничего знать о законе, чтобы написать приложение. Если вы что-то знаете о законе, возможно, вы сможете ускорить свое приложение, используя эти знания, но, скорее всего, вам не следует этого делать. Потому что вам также не нужно ничего знать о законе, чтобы поддерживать приложение, написанное 30 лет назад. Вероятность того, что следующий разработчик, который будет поддерживать приложение, знает, что вы закодировали свои юридические знания, обладает теми же знаниями и/или понимает, верны ли ваши знания теперь, когда закон изменился, должна приближаться к нулю.

Если вам нужна возможность повторного использования, не помещайте приложения в кодировку закона. Если вам нужна ремонтопригодность, не добавляйте юридическую ерунду в кодировку приложения. Обе стороны должны вести себя хорошо, чтобы получить все преимущества.