@ Cumbayah, Привет ... надеюсь, у тебя все в порядке: o) Ты говоришь, что префикс избыточен (тогда у меня есть много переименований ВАШИХ старых интерфейсов, чтобы сделать хе-хе)? Внезапно мне кажется, что, возможно, мне всегда следует ожидать ОЖИДАЕМЫХ интерфейсов, а не конкретных классов. Учитывая это предположение, я понимаю, почему префикс может быть опущен.
тоящее время я читаю «Чистый код» Роберта Мартина (UncleBob) и вообще люблю размышления о UncleBob. Однако, я немного запутался, когда прочитал, что он избегает префиксов интерфейсов, таких как «IPerson». Он заявляет: «Я не хочу, чтобы мои пользователи знали, что я передаю им интерфейс».
Размышляя о перспективе TDD / инъекций, мне всегда будет интересно рассказывать «пользователям» моих классов, что я передаю интерфейс. Основная причина заключается в том, что я рассматриваю контракты интерфейсов между различными "агентами" системы. Агент, работающий с одним углом моей системы, не должен знать конкретную реализацию работы другого агента; они должны только обмениваться контрактами и ожидать, что контракты будут выполнены, не зная как. Другая, но также очень важная причина заключается в том, что интерфейс может быть полностью смоделирован, что значительно упрощает модульное тестирование. Есть пределы тому, сколько вы можете издеваться над конкретным классом.
Поэтому я предпочитаю визуализировать, что я действительно передаю интерфейс ... или принимаю интерфейс в качестве аргумента. Но так как UncleBob является чемпионом в супертяжелом весе в нашем сообществе, а я просто еще один жокей в классе flyweigth, я хотел бы знать, если я что-то упустил.
Это неправильно для меня, чтобы настаивать на я в интерфейсах ??