Sobre o I nas interfaces, geral não gosta e fala que não é uma boa pratica. Até entendo o ponto deles, mas na verdade é que não existe certo ou errado aqui. Honestamente eu gosto, vc bate o olho e já sabe se é uma classe ou interface, principalmente qdo tá olhando código no git. Enfim, eu sempre utilizo nos meu projetos seja lá a linguagem q tô usando.
No java, já vi vários projetos com o tenebroso "impl" nas classes. Aí já é demais...
Sobre as chaves, nesse ponto sou indiferente. Gosto dos 2 jeitos. Uso o padrão da linguagem.
Sobre a nomeclatura, eu tbm utilizo o padrão da linguagem. Mas se puder optar, uso PascalCase para o nome dos métodos e classes, e camelCase para variáveis.
O _ tbm é considerado má pratica. Até mesmo no C#, se baixar um linter qualquer fora o padrão do VS, vai ver que reclamam da utilização e sugerem o uso do 'this'. Estou me forçando a não utilizar o _ , mas confesso que ainda sinto falta.
Na verdade, os membros privados internos do .NET usam o padrão m_. Eu acho que nenhuma informação sobre tipo, acessibilidade etc... deva constar do nome do membro. O que entendo ser correto e elegante é usar algumas convenções mais semânticas, como substantivos para propriedade e verbos no infinitivo para função, por exemplo.
É um pouco estranho utilizar this, com pascalcase. Sobre impl é realmente horrivel aquilo no Java. No Java tu apenas sabe o que é uma constantes, por que o resto e totalmente ruim de visualizar de primeira sem ficar caçando documentação