Quando a linguagem falada do programador deve ser usada durante o desenvolvimento? [duplicado]

38

Sou um desenvolvedor italiano, mas entendo bem o inglês.

Às vezes, ao desenvolver um aplicativo destinado a um público italiano, pergunto-me se é correto usar o idioma italiano no meu código ou não. Por "idioma italiano no meu código" refiro-me aos nomes dos métodos, classes, comentários, variáveis e assim por diante.

Por exemplo, quando escrevo código assim:

/* Attenzione: metodo esageratamente complicato */
public double calcolaImposteDeiServizi() { ... }

Eu quebro alguma lei sagrada de programação porque não escrevi o código da seguinte forma?

/* Caution: overly complicated method */
public double calculateTaxesOfServices() { ... }

Eu me lembro de um projeto em que trabalhei há algum tempo. Foi sobre como calcular IVA / impostos / bônus. Parte desse código estava lidando com conceitos que existiam apenas na economia italiana naquele momento.

Eu preferi escrever esse projeto usando apenas nomes italianos para métodos, caso contrário, seria claramente uma confusão entender que VAT era o IVA do italiano e assim por diante.

Ao usar este exemplo, deve haver algum tipo de regra para decidir quando usar seu idioma ou não no código?

Algum programador altamente autoritário já disse algo sobre esse assunto?

Como você toma esse tipo de decisão em seus projetos?

    
por Bobby 19.06.2014 / 11:08
fonte

11 respostas

20

Esta é uma pergunta muito boa.

Em geral, prefiro manter as coisas em inglês, porque é mais ou menos o padrão de fato para o desenvolvimento de software.

No entanto, também acredito na criação de modelos de domínio que representam os negócios reais, e o modelo de domínio deve ser descrito em termos que façam sentido para as partes interessadas do negócio. E se o negócio não for nativamente inglês, a criação de um modelo de domínio em inglês viola esse princípio. E o que está acontecendo na realidade é que vocês, os desenvolvedores, inventam traduções que podem ou não estar corretas.

E há termos mais prováveis em sua empresa que não se traduzem em inglês.

Um exemplo é o conceito de "Sygedagpenge" na Dinamarca. É um sistema em que as pessoas com um emprego podem obter benefícios públicos se, durante um longo período de tempo, não puderem realizar esse trabalho por causa de uma condição médica. Esta palavra não pode ser traduzida para qualquer idioma porque o sistema é puramente dinamarquês. Outros países provavelmente têm sistemas semelhantes, mas não é o mesmo sistema.

Portanto, não tente traduzir termos de domínio muito específicos do país *. Quer você escreva ou não todo o modelo de domínio / código comercial na língua nativa da empresa, ou se você traduz o máximo possível para o inglês, basta manter as palavras não traduzíveis na língua nativa da empresa. .

Mas a criação de todo o modelo de domínio no idioma nativo da empresa ajudará você, os desenvolvedores, a falar melhor a linguagem de negócios com as partes interessadas da empresa.

Mas, pessoalmente, eu manteria todo o código não comercial em inglês, por exemplo, infra-estrutura e código gui.

* Dado que você diz que trabalha com impostos, IVA, etc. Eu acho que você tem alguns termos específicos do país, já que você provavelmente está lidando com regras ditadas pela legislação em seu país.

** No sistema em que estou trabalhando atualmente, a maior parte do modelo de domínio está em inglês, mas temos alguns conceitos que não podem ser traduzidos, por isso, os mantemos em dinamarquês. Eu acho que esta abordagem está funcionando muito bem no nosso caso. Mas isso não significa que eu preferiria essa abordagem para o próximo projeto.

    
por 19.06.2014 / 12:23
fonte
8

Eu prefiro o inglês com algumas pequenas exceções.

Por que inglês:

  • Se você se comunicar com outros desenvolvedores, será mais fácil para eles entenderem seu código. Por exemplo, copiar & colar código em italiano para stackexchange.com é demorado se você tiver que traduzi-lo antes de publicar.

  • Muitos termos técnicos estão em inglês. Portanto, traduzir esses termos do inglês para nomes específicos de países é mais complexo do que usar termos em inglês prontos para uso.

  • Se você tiver um modelo de domínio específico do país, peça a falantes nativos de inglês as palavras correspondentes em inglês para seu domínio. É muito provável que alguém tenha usado esses termos antes ou que também existam traduções inglesas muito descritivas e expressivas. Além disso, você pode verificar seus termos comerciais em inglês, bem como seu modelo de domínio, porque os falantes nativos de inglês costumam solicitar informações básicas que você geralmente não considera a si mesmo.

  • Se você quiser pesquisar sobre sua base de código (pesquisa de arquivo, pesquisa de membro, pesquisa e substituição ...), será mais fácil perceber se você tiver um idioma consistente. Imagine que você procure por aulas que tenham a ver com taxação: é mais fácil pesquisar os dois substantivos imposto e IVA do que descobrir o número de resíduos de substantivos italianos, japoneses ou dinamarqueses correspondentes.

  • Se o seu projeto crescer e você precisar envolver desenvolvedores externos, salve a dificuldade de traduzir seu código.

  • Alguns compiladores ou ferramentas não gostam de caracteres especiais. Portanto, é melhor usar o conjunto mínimo de letras em inglês.

  • Melhora seu próprio inglês; -)

Quando não:

  • Se você tiver termos específicos do país ou nomes pessoais muito especiais, é melhor usar o substantivo pessoal, porque é mais provável que os falantes nativos de inglês não o traduzam também, pense nos nomes das ruas ou em alguns feriados públicos. por exemplo.

  • Comentários Eu sempre escrevo na linguagem que o público principal [1] fala, porque a intenção do código deveria ser o próprio código. A intenção dos comentários é que o público principal possa entender a intenção do código com mais facilidade. Então, se o público principal fala russo, escreva o comentário em russo. Além disso, codificar em inglês e escrever comentários nativos fornece uma compreensão melhor e consistente do código para os principais membros do projeto.

Minha regra de decisão:

para o código

Imagine que você escreverá um livro escrito para os consumidores em massa: se você usasse a palavra nativa, também usasse a palavra nativa em seu código. Se você traduzisse em um termo expressivo de inglês para que seus leitores de inglês pudessem sentir o significado, use também a tradução em inglês de forma consistente em sua base de código.

para comentários

Escreva comentários para o público [1] como um revisor de uma resenha no idioma que o público possa sentir.

[1] O público não é usuário! Com o público entende-se desenvolvedores, revisores, mantenedores e pessoas que precisam lidar com o código!

    
por 19.06.2014 / 14:54
fonte
5

Depende da empresa para a qual você está trabalhando. Muitas empresas solicitarão o código-fonte em inglês, pois ele tem mais valor dessa forma (você pode terceirizar recursos para outros países com custos de suporte mais baixos). Alguns aceitarão o idioma local por motivos específicos:

  • na camada de negócios, talvez seja difícil traduzir termos específicos de negócios. Usar o inglês pode trazer alguns problemas ao modelar a camada de domínio, pois cada desenvolvedor precisa criar seu próprio vocabulário, a menos que um padrão seja definido e usado para a equipe
  • a empresa não planeja terceirizar seu trabalho de desenvolvimento
por 19.06.2014 / 11:26
fonte
2

Minha regra geral é descrever o que o método faz para um pato de borracha em inglês. Se eu tiver que usar uma palavra hebraica porque não há equivalente em inglês, então o nome do método é em hebraico transliterado. Se eu puder descrever o que o método faz em inglês, o nome do método é inglês. Tente manter o inglês como padrão e o italiano como uma exceção rara.

Não use nomes de metades com metade do idioma italiano e inglês. Isso confunde todo mundo, incluindo você mesmo quando for mantê-lo daqui a seis meses!

    
por 19.06.2014 / 17:34
fonte
2

Anteriormente, fiz um estágio de garantia de qualidade de dois meses em uma empresa de software na filial dos EUA, mas a matriz estava no Japão.

Todas as funções e variáveis foram escritas em inglês (embora isso seja mais fácil para os japoneses, uma vez que eles ensinam inglês como segunda língua), mas todos os comentários e documentação estavam em japonês. Quando começamos a construir em cima de certos módulos, acrescentamos comentários em inglês. Seria algo parecido com:

/*
日本語 comment
--------
English comment
*/
void doSomething() { }

Se estiver trabalhando em um ambiente em que todos falam em um idioma , sinta-se à vontade para usar esse idioma . Se estiver trabalhando em um ambiente onde dois ou mais idiomas são usados, é melhor usar o idioma que for mais aceito universalmente por todas as partes, o que geralmente acaba sendo em inglês, mas pode ser diferente.

    
por 19.06.2014 / 17:57
fonte
2

Eu diria que use inglês, mas é mais complicado do que apenas dizer isso. Eu não usaria public Money calcolaIVA() pela mesma razão que eu não usaria public Money calculateVAT() , eles são muito específicos para o domínio.

O IVA e o IVA são terminologia específica do domínio que se aplica apenas a cada país respectivo. Mesmo quando países diferentes usam a mesma terminologia, eles geralmente têm regras ligeiramente diferentes, o que não faz sentido usar terminologia específica de domínio aqui.

Em vez disso, usaria public Tax[] getAllTaxes() e usaria um padrão de estratégia para escolher, em tempo de execução, entre ItalianTaxRules() , UnitedKingdomTaxRules() , USTaxRules() , some_country = SimplePercentageTaxRule(0.05) , etc.

Cada estratégia pode usar terminologias específicas de domínio no idioma de destino para substantivos em comentários e nomes de classes, porque traduzir substantivos específicos de domínio quase sempre introduziria confusão e ambigüidades mesmo para pessoas que não falam o idioma .

Os métodos públicos entre a Estratégia e o Contexto devem sempre usar terminologias genéricas em inglês. Métodos privados dentro da própria Estratégia podem usar a linguagem específica do domínio conforme apropriado, mas eu teria usado apenas verbos em inglês com substantivos localizados private Money calculateIVA() {} em vez de private Money calcolaIVA() {} .

PS: substitua o inglês acima por "The Common Language". "A Linguagem Comum" é a linguagem que você espera que TODOS os mantenedores do programa agora e no futuro falem. Na maioria das situações, a única escolha razoável para isso é o inglês, mas pode haver situações em que faça sentido que "a linguagem comum" seja outra.

    
por 19.06.2014 / 20:30
fonte
1

Eu pessoalmente sempre usaria o inglês.

  • O inglês é uma linguagem de referência de fato para o desenvolvimento (entre outros).
  • Os diretórios de terceiros ou a API de serviço da web são escritos em inglês. Eu sinto que misturar linguagem nesse caso é um pouco feio e confuso.
  • O inglês também é falado em todo o mundo, sendo geralmente escolhido por pessoas que falam idiomas diferentes para se comunicar. Este ponto é o mais importante para mim porque eu moro em um país com três idiomas oficiais e muitos estrangeiros trabalhando como desenvolvedores. Por conseqüência, é bastante comum que os membros das equipes de desenvolvimento falem diferentes idiomas. Além disso, muitas vezes trabalhei em projetos desenvolvidos ou que serão mantidos no exterior.
  • Se você pretende criar bibliotecas, serviços da Web ..., é óbvio que a API e a documentação em inglês são necessárias se você quiser que ela seja usada em todo o mundo.

Como mencionado em outras respostas, há algumas restrições, é claro, como termos específicos que são difíceis de traduzir em inglês, mas permanecem excepcionais e não devem fazer com que você prefira outro idioma.

    
por 19.06.2014 / 16:02
fonte
1

Eu diria que você deve fazer o que funciona melhor para as pessoas que vão estar olhando para o seu código. A finalidade dos nomes de métodos, nomes de variáveis e comentários é tornar clara a INTENÇÃO do seu programa.

Se você pode razoavelmente esperar que as únicas pessoas que estarão lendo o código sejam falantes de italiano, por que diabos eles tentam decifrar traduções inglesas? Além disso, se o inglês for uma segunda língua para você, tentar traduzir tudo provavelmente levará a comentários e nomes menos claros do que se você tivesse ficado com seu idioma nativo.

Se, por outro lado, aqueles que vêm depois NÃO são esperados como falantes nativos, então o Inglês é provavelmente uma boa escolha como segunda língua.

    
por 19.06.2014 / 17:00
fonte
0

Eu mesmo faço algumas programações (embora eu seja principalmente um administrador de sistemas) e nós temos uma grande equipe de desenvolvimento de software aqui no site.

Temos um consenso claro entre as pessoas aqui:

Em geral, a linguagem de programação em si tem sua base em inglês.
Usar nomes não ingleses para métodos, funções, variáveis, etc. é, portanto, em nossa opinião, para evitar que o autor e o leitor tenham que alternar entre dois idiomas. Mentalmente, o malabarismo com 2 idiomas não é bom para o entendimento geral e também é cansativo. O benefício adicional é que conseguir outro programador trabalhando no código é mais fácil, já que qualquer programador pode ter um conhecimento funcional do inglês. (Nota: O conhecimento de trabalho não é igual a "bom". Mas geralmente é bom o suficiente para sobreviver.)

Escrever os comentários em outro idioma também deve ser evitado, exatamente pelas mesmas razões.

A ÚNICA exceção a isso é a nomeação de objetos, funções, variáveis que possuem um significado muito específico no contexto do programa e na linguagem do público-alvo.

O exemplo já mencionado de um imposto que existe apenas na Itália é um bom exemplo para ilustrar isso: Não faz sentido tentar traduzir o nome italiano desse imposto para outro idioma. Para enfatizar isso é específico para a Itália, o nome italiano se destaca e garante que, em algum momento posterior, nenhum programador irá confundi-lo com outro imposto (mais geral) também mencionado em algum lugar do programa.

    
por 19.06.2014 / 16:31
fonte
0

Como muitas outras pessoas dizem, o inglês é bastante normal. Você pode ter que pensar em como a vida útil do seu código poderia ser.

Algum tempo atrás eu trabalhei no escritório de desenvolvimento indiano de uma empresa européia multinacional e os membros da minha equipe foram intercalados entre alguns desenvolvedores de outra equipe em um projeto não relacionado, mas todos pudemos ouvir as discussões e questões da equipe . O problema que a outra equipe teve é que essa empresa gigantesca comprou uma pequena startup finlandesa (ou simplesmente comprou o software deles, não estou claro) que escreveu todo o código em finlandês.

Nenhum dos membros da equipe indiana falou uma palavra em finlandês. Eles passaram meses e meses tentando traduzir o código ou, pelo menos, as partes não específicas do código do domínio. Muita busca e substituição, recompilação, erros, correção, erros, recompilação.

Em suma, devido ao finlandês vs inglês, a empresa não obteve nenhum uso produtivo de sua compra.

    
por 19.06.2014 / 18:29
fonte
0

Eu diria que nunca.

É melhor para você e para o mantenedor ter uma linguagem comum (inglês). você não sabe quando sua língua não será capaz de expressar o que você está fazendo, eu falo 4 idiomas diferentes. Eu não domino inglês, não é nem minha melhor língua, mas qualquer comentário ou definição se encaixa melhor em inglês do que em qualquer outro.

E devo acrescentar que isso pode ajudar a melhorar sua compreensão do inglês técnico, sua capacidade de entender fóruns globais que provavelmente não estarão em italiano.

    
por 19.06.2014 / 19:26
fonte