A maioria das linguagens OO prefixa seus nomes de interface com I maiúsculo, por que o Java não faz isso? Qual foi a justificativa para não seguir esta convenção?
Para demonstrar o que quero dizer, se eu quisesse ter uma interface de usuário e uma implementação de usuário, teria duas opções em Java:
- Classe = Usuário, Interface = UserInterface
- Classe = UserImpl, Interface = Usuário
Onde na maioria dos idiomas:
Classe = Usuário, Interface = IUser
Agora, você pode argumentar que sempre pode escolher um nome mais descritivo para a implementação do usuário e o problema desaparece, mas o Java está adotando uma abordagem POJO para as coisas e a maioria dos contêineres do IOC usa o DynamicProxies extensivamente. Essas duas coisas juntas significam que você terá muitas interfaces com uma única implementação do POJO.
Então, acho que minha pergunta se resume a: "Vale a pena seguir a convenção de nomenclatura de interface mais ampla, especialmente à luz de onde o Java Frameworks parece estar indo?"
NetworkInterface
, DialogInterface
, etc.