Бекграунд: Заказчик очень часто задает КАК сделать, что-то вместо, того чтобы формулировать ЧТО нужно сделать. В общем, это даже и не заказчик, а постановщик со стороны заказчика.
Проблема следующая. Создается, уже есть банковская система. Как обычно физические лица идентифицируются с помощью типа документа, номера документа (номер паспорта) и личного номера. Есть следующие типы документов: 1. "Паспорт гражданина РБ от 1996 года", 2. "Паспорт иностранного гражданина". Сейчас нужно работать с клиентами с типом документа "Вид на жительство" (3).
Постановщик выступает за то, чтобы совместить тип 1 и 3, и получить что-то вроде "Паспорт гражданина РБ от 1996 года или вид на жительство". Во "внутренностях" программы тип "паспорт гражданина РБ от 1996 года" так и остается типом документа "Паспорт гражданина РБ от 1996 года". С его точки зрения "совмещение" типов документов вполне правильный подход, т.к. позволяет ускорить разработку. Буквально произноситься следующее: пусть при вводе показывается сообщение, что это вид на жительство, ну а данные просто вводятся, т.е. типа документа пусть будет "Паспорт гражданина РБ от 1996 года", ну а личный номер и номер документа уже будет соответствовать виду на жительство. Постановщик убежден, что т.к. сейчас тип документа не используется, то "ничего страшного произойти не может".
Я аргументирую:
1. тип документа будет не верен, если реализовать такой ввод.
2. более чем вероятны ошибки в других системах и при взаимодействии с другими системами, т.к. как бы информация о типе документа есть, но она просто не верна, может интерпретироваться другими разработчиками не верно.
3. то, что сейчас тип документа не используется только говорит о том, что т.к. семантика не отражена в синтаксисе, то именно тип документа и работа с этими данными будет проблемными моментами в будущем коде.
4. сущность тип документа становиться через чур сложной, т.к. значения типа не определяют точно тип документа, а могут определять сразу два типа документа.
5. такая "экономия" на разработке может вылиться в то, что возможно могут возникать и проблемы с безопасностью банка, не уверен, но эти затраты могут на порядки перекрыть экономию при разработке.