O que você faz quando sua convenção de nomenclatura se choca com o seu idioma?

14

Ok, essa é uma daquelas pequenas coisas que sempre me incomodavam. Eu normalmente não abrevia identificadores, e a única vez que eu uso um identificador curto (por exemplo, i ) é para um loop apertado. Então, isso me irrita quando estou trabalhando em C ++ e tenho uma variável que precisa ser nomeada operator ou class e tenho que contornar isso ou usar uma abreviação, porque ela acaba saindo. Ressalva: isso pode acontecer comigo de maneira desproporcional, muitas vezes, porque eu trabalho muito no design da linguagem de programação, em que objetos de domínio podem espelhar conceitos na linguagem do host e, inadvertidamente, causar conflitos.

Como você lidaria com isso? Abreviar? ( op ) Misspell? ( klass ) Algo mais? ( operator_ )

    
por Jon Purdy 03.01.2011 / 18:51
fonte

9 respostas

21
  1. Aceite que você pode ter que fazer pequenas alterações em sua convenção de nomenclatura, como adicionar maiúsculas e minúsculas. É melhor aceitar isso o mais rápido possível para que todo o código subseqüente seja consistente.

  2. Considere ser mais específico. As palavras-chave tendem a ser bem amplas, portanto, restringir class a demonstrationClass não apenas funciona em torno dos problemas, mas também aumenta a legibilidade.

por 03.01.2011 / 19:43
fonte
10

Não é algo que eu tenha encontrado, mas se eu entrar em tal situação, tentarei resolvê-lo com as seguintes opções, em ordem.

  1. Tente encontrar um sinônimo.
  2. (especialmente para variáveis) tente encontrar um prefixo ou um postfix
  3. (especialmente para classes) altere a primeira letra para maiúscula e esqueça a regra de codificação de que os nomes não devem diferir apenas no caso. Esta opção, provavelmente usaria apenas se o conflito estivesse com uma palavra-chave.
  4. Use uma abreviação.
por 03.01.2011 / 19:10
fonte
6

A língua ganha; você não pode enganar o compilador (ignorando abominações como o PL / 1 IF IF = THEN THEN THEN = ELSE ELSE ELSE = IF END , mas PL / 1 não faria com que você fizesse a pergunta em primeiro lugar). Basicamente, você tem que seguir as regras do idioma, e você tem que encontrar uma alternativa para as palavras-chave do idioma para seu próprio uso - ou encontrar um idioma alternativo.

Portanto, exceto em circunstâncias muito incomuns, você se adapta à linguagem, e não o contrário.

    
por 03.01.2011 / 21:53
fonte
5

Em vez de abreviar o alongamento? Se você está implementando uma construção de classe em uma linguagem Foo, que tal usar FooClass e foo_class? (Módulo independentemente das suas preferências de embalagem).

    
por 03.01.2011 / 21:01
fonte
5

Algumas das abreviaturas que usei para class , por ordem de frequência:

  • cls
  • clss
  • clazz
  • theClass
  • aClass

Se eu sei qual classe a Class instance representa, posso incluí-la no nome da variável:

  • stringClass = Class.forName("java.lang.String");
por 03.01.2011 / 23:18
fonte
4

Em C e C ++, as palavras-chave são todas minúsculas e o idioma diferencia maiúsculas de minúsculas, portanto, pressione a tecla Shift de vez em quando e muitos problemas desaparecem.

No Modula 2, as palavras-chave são todas maiúsculas - mas, desde que os seus identificadores tenham algumas letras minúsculas, a diferença é óbvia e se choca de forma impossível.

Além disso, as convenções de nomenclatura em algum grau precisam refletir as convenções normais da linguagem que você está usando, então eu certamente escreverei "myClass" em Java onde eu provavelmente escreveria "My_Class" em C ++. / p>

Basicamente, você não está apenas escrevendo para o compilador, mas o que as pessoas acham legível depende, até certo ponto, do contexto e das expectativas relacionadas.

    
por 03.01.2011 / 19:25
fonte
3

Eu não costumo me deparar com isso, mas quando faço isso tende a ser um problema, porque eu uso o Delphi e ele permite que você contorne esse problema adicionando um & para o identificador. Então, "classe" não é um identificador válido, mas "& class" é.

    
por 05.01.2011 / 02:21
fonte
2

Eu adicionaria algum tipo de namespace ao nome da variável. Por exemplo, suponha que você tenha o usuário nomeado do módulo, então eu modificaria o operador do nome da variável para ser algo como user_operator ou userOperator.

    
por 03.01.2011 / 18:57
fonte
2

altere ou ajuste minha convenção de nomenclatura

    
por 03.01.2011 / 20:40
fonte

Tags