um programador, muitos idiomas - o nome dilema

14

Quando você trabalha em várias linguagens de programação, há um problema que você encontra ...

Um nome válido (identificador) em um idioma é inválido em outro. Por exemplo ...

var new function this são palavras-chave em JavaScript, mas você pode usá-las livremente no Python. Da mesma forma, list dict def pode ser usado em JavaScript sem problemas.

Isso é muito comum e algo em que os programadores geralmente se familiarizam rapidamente quando eles programam em vários idiomas.

No entanto, quando você está trabalhando em colaboração, precisa definir algumas regras / diretrizes para os membros de sua equipe para garantir consistência e uniformidade no código. Com as equipes, esse problema se torna mais importante do que simplesmente lembrar o que é válido e o que não é enquanto você programa.

Então, minha pergunta é: que estratégias você adota ...

  • basta unir todas as palavras reservadas presentes em todos os idiomas que você usa, distribuir uma lista para todos e se abster do uso deles?
  • aceite a diversidade e faça um esforço extra quando "troca de contexto"
  • adota um terreno intermediário onde um idioma pode usar o outro, mas não vice-versa

(Nota: estou falando apenas sobre Python e JavaScript nesta questão ... mas, por favor, responda à pergunta mais amplamente)

- ATUALIZAÇÃO -

Obrigado por todas as respostas. Assim, o consenso geral que vejo emergindo é deixar que os programadores usem qualquer nome, independentemente do que eles façam em outras línguas - desde que os nomes sejam descritivos, não faz mal.

    
por treecoder 10.08.2011 / 19:56
fonte

9 respostas

46

Tendo programado em algumas línguas ao longo dos mais de 30 anos da minha experiência, eu diria que tentar encontrar padrões de nomenclatura que funcionem em qualquer idioma é provavelmente uma ideia do céu.

No começo da minha experiência, eu tentei usar #define macros em C para criar coisas que fariam meu código C parecer com o código Pascal que eu estava usando antes disso. Eu estava tão acostumado a programar em Pascal que percebi que se eu pudesse fazer o C funcionar como Pascal, isso me tornaria mais produtivo. Logo descobri que estava errado.

O que me tornou mais produtivo foi aprender C e não tentar usar a sintaxe Pascal em outro idioma só porque me deixou mais confortável.

Acho que você estará potencialmente restringindo seus programadores, impedindo-os de fazer algo em um idioma, só porque é errado fazer isso em outro idioma que você esteja usando.

Se você limitar suas convenções de nomenclatura a coisas que façam sentido para explicar o uso da variável, provavelmente você criará um bom código, em qualquer idioma.

    
por 10.08.2011 / 20:23
fonte
24

Você não deve nomear as coisas "list", "new", "var", "this" em primeiro lugar, já que elas não são suficientemente descritivas em nenhum idioma.

    
por 10.08.2011 / 21:10
fonte
11

Mudar de, digamos, javascript para python já é uma mudança de contexto. Não acho que seja ruim se os nomes das variáveis mudarem, especialmente se as alterações no nome forem idiomáticas com o idioma. Poderíamos até argumentar que os switches de contexto mais difíceis podem ajudar nesse caso, já que isso ajuda a reforçar "cara, você está escrevendo javascript e não python agora".

    
por 10.08.2011 / 20:11
fonte
7

Acho que, se você estiver usando a nomenclatura de variável descritiva, o problema que descreve deve ser mínimo. Com isso dito, se for mínimo, aceitar o deslocamento de contexto causado pela nomeação de variáveis entre idiomas também se torna mínimo.

    
por 10.08.2011 / 20:22
fonte
5

A maioria das palavras reservadas (em qualquer idioma) são bem gerais. Prefiro nomes de variáveis / funções que são mais descritivos e isso significa que quase nunca encontro esse problema. Eu devo admitir ter sido infectado por Charles Simonyi com seu esquema original de nomeação - isso foi na Xerox no final dos anos 70, antes mesmo de ser chamado de Notação Húngara - e isso também tende a significar que os nomes são algo do que nenhum humano sadio. jamais usaria palavras reservadas.

    
por 10.08.2011 / 20:21
fonte
5

Você não deve perder seu tempo escrevendo orientações até descobrir que isso é um problema real , não hipotético.

Uma situação em que posso pensar onde isso pode se tornar um problema é quando você compartilha estruturas de dados entre linguagens de programação. Por exemplo, se você tiver um objeto Javascript no lado do cliente que seja refletido em um objeto Python no lado do servidor, e você naturalmente deseja que eles tenham os mesmos nomes para seus membros. Nesse caso, a regra é simples: não use nomes que são palavras reservadas em nenhum dos idiomas. É isso aí. Escreva isso nas diretrizes, se quiser. Agora passe para tarefas mais importantes.

BTW, nenhuma lista nem dict é uma palavra reservada em Python. Eles podem ser usados como nomes de variáveis, apesar de serem muito ruins.

    
por 11.08.2011 / 01:28
fonte
3

Na minha experiência, a correção para isso é ter convenções de nomenclatura amplas que se apliquem a todos os idiomas. Quer seja JavaScript, C # ou alguma outra linguagem funky, a forma como as variáveis e classes são nomeadas pode se tornar um padrão dentro de uma base de código, que é como eu geralmente vejo a solução desse problema. As convenções podem ser acordadas por consenso de todos, simplesmente a maioria querendo uma diretriz, gerenciamento dizendo: "É assim que fazemos", ou algumas outras possibilidades que eu imagino.

Eu raramente vejo o problema do identificador que você descreve porque na maioria das vezes meu nome de classe ou variável é descritivo o suficiente para não entrar em conflito tão facilmente. Ao mesmo tempo, se alguém está trabalhando com os outros do que ter clareza sobre como a equipe deseja lidar com isso é o ponto importante.

    
por 10.08.2011 / 20:18
fonte
2

Não consigo ver como isso pode ser um problema, a menos que você planeje mover códigos de um idioma para outro. Se você, pessoalmente, tende a esquecer quais nomes de variáveis são válidos, não use um nome de variável, a menos que tenha certeza de que é válido. Mas se outras pessoas usarem nomes de variáveis inválidas, o código não será compilado ou executado. Então, se você está trabalhando no código de outra pessoa, e eles chamaram algo de 'var', você pode ter certeza de que é um nome válido em qualquer idioma que esteja usando.

Se você planeja mover o código de um idioma para outro, talvez precise de uma lista de nomes proibidos. Por exemplo, meu documento de práticas de codificação C proíbe o uso de novo ou classe como uma variável, porque isso torna o código mais difícil de portar para o C ++. Nesse caso, é razoável definir regras que facilitam esse trabalho, caso seja necessário,

    
por 13.08.2011 / 15:09
fonte
-2

Basta seguir para o CamelCase, que é o menor. Isso funciona em todos os lugares. Isso é chamado de procurar o menor denominador comum entre sistemas incompatíveis, e você se verá fazendo isso com frequência!

    
por 10.08.2011 / 20:44
fonte

Tags