Каков наилучший способ справиться с ограничением API? - PullRequest
0 голосов
/ 04 августа 2010

Наш основной домен до сих пор имеет абстракцию под названием PersonName с методами для firstName, lastName, middleInitial и т. Д. Поскольку мы расширяем домен до Испании, мы решили, что они говорят только в терминах name, firstSurname и secondSurname, т.е. не имеет значения для них.

Интерфейс PersonName в настоящее время используется во многих местах в текущем API, и SpainPersonName также следует использовать в тех же местах. Итак, мой вариант - это расширение SpainPersonName от PersonName. Но, если я сделаю это, то я в конечном итоге выставлю API для firstName, middleInitial и т. Д., Которые не применимы для домена Испании.

Мой вопрос: как лучше всего мы можем реорганизовать текущие абстракции, сохраняя обратную совместимость? Любые предложения по рефакторингу или дизайну приветствуются.

Ответы [ 2 ]

1 голос
/ 04 августа 2010

Похоже, вам нужно изменить PersonName на AngloPersonName и создать интерфейс PersonName?

1 голос
/ 04 августа 2010

Я не совсем уверен, что ваш вопрос.Под «расширением SpainPersonName от PersonName» вы имеете в виду, что SpainPersonName реализуется или наследуется от PersonName?

В любом случае позвольте мне предположить, что абстракция PersonName может быть ошибочной.Абстракция должна быть широко применима, по крайней мере, к ситуациям, где она применяется, верно?Мы, испанцы, не думаем с точки зрения имени и фамилии, как вы хорошо заметили.Может быть, абстракция нуждается в переосмыслении.По моему опыту, абстракция на основе GivenName плюс FamilyName является наиболее широко применимой, даже для азиатских культур, где порядок имен не является «обычным».

Будучи конструктивным, я думаю, что вам нужносопоставьте испанскую первую и вторую фамилии с абстрактной фамилией, потому что это (первая и вторая фамилии) - это то, что мы, испанцы, считаем своей «фамилией».Если вы можете это сделать, значит, у вас все хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...