Большинство языков OO префикс их имен интерфейса с помощью капитала I, почему Java не делает этого? В чем заключалась причина не следовать этому соглашению?
Чтобы продемонстрировать, что я имею в виду, если бы я хотел иметь пользовательский интерфейс и пользовательскую реализацию, у меня было бы два варианта в Java:
- Класс = Пользователь, Интерфейс = Пользовательский интерфейс
- Класс = UserImpl, Интерфейс = Пользователь
Где на большинстве языков:
Класс = Пользователь, Интерфейс = IUser
Теперь вы можете утверждать, что вы всегда можете выбрать наиболее описательное имя для пользовательской реализации, и проблема исчезнет, но Java, нажимая POJO-подход к вещам, и большинство контейнеров IOC широко используют DynamicProxies. Эти две вещи означают, что у вас будет много интерфейсов с одной реализацией POJO.
Итак, я думаю, мой вопрос сводится к следующему: "Стоит ли следовать более широкому соглашению об именовании интерфейсов, особенно в свете того, что Java Frameworks, кажется, заголовок?"