[Dúvida] Convenções de codificação Português / Inglês em Instituição Pública Governamental
Olá pessoal, meu primeiro post aqui! o/
Sou dev C#.NET (já fui de Java tb).
Problema: Programar em português ou inglês ? Ou ambos?
Esse assunto é velho, eu sei, eu sei. Mas o que a comunidade TabNews pensa a respeito?
Eu fiz uma pesquisa prévia, e vi um post de 11 meses atras apenas recomendando 100% uso de inglês (o que eu discordo em partes pelo motivo que explicarei abaixo): 8 motivos para programar em ingles.
O post do colega acima afirma que devemos usar inglês pra tudo no código. Mas há exceções, talvez mais do que se imagine. Se você mora no Brasil e trabalha com um domínio de problema especializado/focado demais para o Brasil, você não vai querer programar 100% em inglês.
Discutindo o problema
Eu creio que não dá pra seguir 100% português, nem 100% inglês nesses casos. Na internet há a galera que fala que 50% do código é PT-BR, e 50% é inglês rsrs. Farei algumas considerações abaixo e gostaria de saber a opinião da comunidade:
Alguns pontos que eu acho positivo nomes de classes em Português:
- Só de bater o olho você saberá que é uma classe feita em casa, e que não pertence a algum framework;
- Transmite com mais fidelidade a Linguagem Ubiqua do negócio (a menos que seu cliente use realmente em inglês);
- Seus colegas são brasileiros, e a língua nativa é o Português, facilita o entendimento (sim, o inglês é necessário/obrigatório, mas ainda é a segunda língua, fora que talvez nem todos da equipe tenham o mesmo nível de inglês);
Desvantagens (casos em que misturamos portugues e inglês INEVITAVELMENTE):
- Termos e padrões técnicos na TI são em inglês. Eu particularmente gosto de MANTER o original. Ex: AlgumaCoisaRepository (padrão Repository), AlgumaClasseDto (Data Transfer Object), AlgumaClasseStream (implementa um Stream), AlgumaClasseService, AlgumaClasseConverter, AlgumaClasseException... etc.
- Muitos frameworks adotam convenções de nomes. Ex: AlgumaCoisaController (MVC). É mais fácil seguir a convenção do que tentar customizar o framework.
Qual sua opinião ?
Dito isso, e considerando por exemplo, que eu trabalho numa Instituição do Poder Judiciário Brasileiro, pergunto:
- Vocês acham confuso ter essa mistura de inglês e português em nomes de classes principalmente (métodos eu costumo escrever em português) ?
- No caso de desenvolvimento de biblioteca de classes internas (uma das minhas responsabilidades), o que seria mais fácil absorver/entender para um programador: tudo em inglês, ou misturado pt + eng ?
Exemplos reais para ilustrar o problema
Estou tentando manter alguma consistência na nossa lib interna. Listarei alguns exemplos na versão PT e outra PT+EN:
Exceptions
- DomainException vs DominioException / BusinessRuleException vs RegraNegocioException
- ForbiddenAccessException vs AcessoNegadoException
Classes base herdáveis
- BaseEntity vs EntidadeBase
- BaseEvent vs EventoBase
Interfaces / abstrações
- IIdentityService vs IIdentidadeAcessoService (interface para operações com usuários da aplicação) - para galera do .NET, basicamente estou abstraindo o AspNet Identity em métodos, como:
ObterPerfisUsuarioAsync(idUsuario)
ouAutenticar(login, senha)
- ILdapAuthenticator vs IAutenticadorLdap
Classes / Implementações padrão para reutilização
- PaginatedList vs ListaPaginada
- ValidationBehavior vs ValidacaoBehavior (pipeline behavior do MediatR)
- AuthorizationBehavior vs AutorizacaoBehavior (pipeline behavior do MediatR)
- PagingSpecification vs PaginacaoSpecification (padrão Specification)