Почему мы используем префикс имени интерфейса, а не суффикс? - PullRequest
1 голос
/ 13 июня 2019

Я получаю, что мы читаем слева направо и
ApacheConfigFileHandler implements ConfigFileHandler
звучит лучше, чем
ConfigFileHandlerApache implements ConfigFileHandler
когда говорят.

Но когда я ищу класс, я обычно знаю интерфейс, который ищу, и обычно не знаю точное имя реализации.
Я знаю, что ищу ConfigFileHandler, но я могу не знать, что имя Реализации, которое я ищу, - «Apache».
Таким образом, с точки зрения завершения кода, с суффиксным подходом, я мог бы искать ConfigFileHandler, и тогда он предлагал бы мне все реализации ConfigFileHandler, включая AppacheConfigFileHandler.

Преимущество суффиксного подхода становится еще более очевидным, когда иерархия наследования больше:
Допустим, у меня есть
FastApacheConfigFileHandler extends ApacheConfigFileHandler
что было бы
ConfigFileHandlerApacheFast extends ConfigFileHandlerApache
с суффиксным подходом.

Я знаю, что ищу ConfigFileHandler, поэтому я набираю ConfigFileHandler, затем вижу Apache и думаю: «Да, я помню, что класс, который я ищу, это AppacheConfigFileHandler», поэтому я продолжаю печатать до ConfigFileHandlerApache и увидеть все расширения / реализации AppacheConfigFileHandler и, наконец, найти мой FastApacheConfigFileHandler aka ConfigFileHandlerApacheFast.

Что-то не так с подходом суффикса имени реализации (за исключением того, что он не звучит так хорошо, когда произносится)?
Если да, то что не так? Если нет, то почему этот подход не стал стандартом?

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

Один пример для этого: когда я читаю первое слово Fast из FastApacheConfigFileHandler, я понятия не имею, с чем имеешь дело, затем я читаю FastApache, но пока не очень много идей, затем я читаю FastApacheConfigFileHandler, чем я знаю точно, с чем я имею дело. По сравнению с тем, когда я сначала читаю ConfigFileHandler, я вроде знаю, с чем я имею дело, и получаю больше подробностей, чем дальше я читаю имя класса.

1 Ответ

1 голос
/ 13 июня 2019

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

Принимая этот подход к своему естественному заключению, имена классов становятся полностью неразрешимыми.

Применение к пакету java.util:

...