O que você nomeia funções / variáveis ​​/ etc quando não consegue pensar em um bom nome? [fechadas]

13

Quando você está definindo uma função / variável / etc e não tem certeza do nome, qual é o nome? Como você cria um nome?

Se você usa um nome temporário como um cartão de visita até dar o nome verdadeiro, que nome temporário você usa?


atualizar

Tenho vindo a utilizar coisas como WILL_NAME_LATER, NEEDS_NAMEou TO_BE_NAMED. Eu esperava que houvesse uma convenção adotada, na verdade eu esperava que, se eu usasse essa convenção, meu IDE destacaria o nome até que eu o mudasse.

JD Isaacks
fonte
Cuidado ao usar todos os caps para nomes de variáveis. Por convenção popular, significa uma variável global.
spong
@ Sunpech, eu sei, eu uso essa convenção de nomenclatura também para constantes. Mas acho que a capitalização se destaca, para não esquecer de renomeá-la. Não o deixo assim por muito tempo.
JD Isaacks
3
Para todas as pessoas que estão dizendo, você nunca deve ter um problema esbarra com um nome ... Mesmo Jon Skeet , por vezes, não pode: stackoverflow.com/questions/521893/...
JD Isaacks
@ JohnIsaacks Eu acho que você deve negrito temporário . Muitas pessoas estão lendo esta pergunta e transformando código em algo sagrado. Honestamente, sim, você pode escrever um código desleixado ESPECIALMENTE quando estiver tentando avançar para algo mais importante. Não estamos gravando código em pedra aqui.
spong
1
Eu acho que a convenção para algo como isso seria adicionar um TODO no código, com a explicação de por que você precisa atualizá-lo. Muitas ferramentas podem analisar esses TODOs e mostrar uma lista de tudo o que resta a ser feito.
Eduardo Scoz 01/10/10

Respostas:

29

É quase impossível não conseguir pensar em um nome para um artefato que você deseja criar. Você pode não gostar do nome que aparece, porque não é conciso ou sexy, mas se você pensar demais, você acabará com um artefato com um nome ruim.

Digamos que você tenha algo que o ajude a construir objetos, mas você não sabe que isso geralmente é chamado de fábrica. Basta chamá-lo de ObjectCreator. Parece obtuso, mas pelo menos é claro.

Digamos que você tenha um dicionário que converta nomes de host em endereços IP. Vá em frente e chame-o HostnamesToIpAddresses. Claro que é longo, mas diz exatamente o que faz.

A incapacidade de criar um nome para algo significa que você não sabe o que está fazendo, o que também significa que você tem um problema maior diante de você.

Mark Canlas
fonte
8
Eu sempre quero dar um tapa nas pessoas que reclamam que os identificadores são muito longos (quando são apenas três ou quatro palavras). Não devemos ficar limitados pela nossa velocidade de digitação e, se estivermos, devemos procurar o ABCD e aprender a digitar!
dash-tom-bang
1
+1 por causa de "The inability to come up with a name for something means you don't know what it is doing". Eu acho que esse é realmente um ponto importante. Perceber isso ajuda a encontrar ambiguidades e clareza no código.
BiAiB
34

Eu sempre tento dar grandes nomes às minhas variáveis ​​e funções .

Se não consigo pensar em um grande nome, aceitarei um bom nome .

Se não conseguir encontrar um bom nome, usarei um nome correto .

Nunca, em 15 anos de programação profissional, fui incapaz de criar um nome decente.

Portman
fonte
6
+1 por ser poético.
spong
1
... no entanto, há 15 anos e 6 meses, nasceu o Microsoft Bob.
VirtuosiMedia
12

Se você não consegue pensar em um bom nome em uma variável ou função, você não entende o que está fazendo ou tem um design ruim. De qualquer maneira, digitar um nome arbitrário como "x" (a menos que você esteja lidando com coordenadas) não resolverá seu dilema; só piorará e a dor continuará maior.

gablin
fonte
8
Discordo. Os desenvolvedores nem sempre têm um entendimento completo da terminologia do negócio. Heck, mesmo o cliente pode não ser capaz de transmitir a terminologia durante a coleta de requisitos - e muito menos às vezes até entender seus próprios negócios! Mas isso não impede que o software seja produzido. Não impede que protótipos sejam criados. Ou até mesmo o código que está sendo jogado fora devido à falta de entendimento. Mas o código nessas situações ainda precisa ser produzido e entregue.
spong
3
@sunpech Com licença, mas isso é um pouco assustador. Você está tentando nos dizer que é comum escrever código aleatório sem saber o que realmente faz? Se você não souber algo, faça um esforço para descobrir e evitará problemas no futuro.
Adam Byrtek
@AdamByrtek Não, não quero dizer isso. O que estou dizendo é que nem sempre cabe ao desenvolvedor e à equipe ter o melhor entendimento do que um cliente deseja. Alguns clientes têm dificuldade em explicar o que querem ou não sabem o que querem. Código incorreto acontece. Os problemas ocorrem em projetos, desde requisitos ruins a prazos irrealistas. Isso é realidade. Não existe um mundo perfeito onde um desenvolvedor terá todas as incógnitas resolvidas, onde os clientes são perfeitos e os prazos são precisos. O código gerado para protótipos deve ser jogado fora. Mas a codificação ainda precisa acontecer.
spong
continuação ... Não estamos falando em criar código de produção ou o código final antes de um check-in. Estamos falando sobre como nomear algo que ainda não temos o máximo entendimento - para começar inicialmente em algo que não está claro por possivelmente uma boa razão (exemplo: ninguém na equipe ainda o entende, talvez não até o cliente). Mas as coisas precisam avançar ainda com base no que é conhecido.
spong
1
@ sunpech: O único lugar que eu realmente vi fooe baruso no código é em pequenos trechos de código usados ​​para mostrar um conceito. Claro, também tropeço quando penso em nomes, mas nunca acabei em uma posição tão ruim, onde foofoi a única opção razoável. Se isso acontecesse, realmente não sei o que diabos estou fazendo e preciso voltar para a prancheta e o pseudo-código até saber o que fazer.
gablin
5

Esta pergunta e especialmente suas respostas me assustam. Alguém precisará manter o código no qual você acabou de nomear uma variável "Cup", você sabe. Se você não tiver sorte, alguém será você!

Você tem uma variável. É uma coisa Representa uma coisa, de qualquer maneira. E as coisas têm nomes. É assim que você sabe que são coisas! Você está realmente me dizendo que precisa nomear uma coisa após outra, porque não consegue inventar o nome da coisa real?

Iteradores devem ser chamados i. Os iteradores aninhados provavelmente são um erro, mas se você precisar deles, siga o restante das vogais, em ordem (a, e, o, u e deus me ajude, sim, às vezes y).

Além disso, basta chamar a coisa do que é e fazer com ela!

Dan Ray
fonte
9
Eu devo protestar! Claramente, o iterador interno deve ser chamado j e aquele dentro desse k . A tradição matemática de longa data está olhando por cima do ombro!
Frank Shearar 01/10/10
Hã. Eu nunca fiz j e k. Eu vejo que é sensato, no entanto.
Dan Ray
8
Uma das razões pelas quais Dijkstra era tão natural para a ciência da computação era que seu nome incluía as três variáveis ​​mais comuns do iterador na ordem correta.
glenatron
3
@glenatron: Finalmente, uma maneira de lembrar como se escreve esse nome!
configurador
4

Se não conseguir criar um ótimo nome imediatamente, uso temporariamente um nome "ok" e continuo codificando. Pelo menos, será algo que descreve adequadamente o item, mesmo que não seja perfeito . Quase sempre, quando terminar de escrever o primeiro rascunho desse pedaço de código em particular, um nome mais perfeito terá me ocorrido. Através do processo de codificação, minhas intenções com essa variável específica se tornam mais claras. (Por outro lado, às vezes me ocorre que a variável to foi mal concebida para começar e a excluo em favor de outra coisa.)

Nick Spreitzer
fonte
3

Eu nomeio o que acho que a função deve fazer - algo que mais ou menos transmite a intenção. Depois que o corpo da função é escrito, acho óbvio como chamá-lo, e volto e o renomeio, se necessário.

Adam Lear
fonte
1
Isso nem sempre funciona, especialmente quando o desenvolvedor pode não estar familiarizado com a terminologia ou mesmo com a intenção do negócio / setor. Algo mais genérico e óbvio deve ser usado para demonstrar que ele precisa ser definido e alterado posteriormente. O OP parece estar perguntando quando a intenção é desconhecida e o que deve ser usado inicialmente . Se a nomeação é algo que transmite mais ou menos intenção, então um bom nome já não está muito longe.
spong
1
@sunpech Sério, mesmo quando comecei em um trabalho com um domínio bastante específico, não tive problemas para encontrar um nome de função. Talvez eu só precise escrever mais funções. :)
Adam Lear
1
@sunpech: Como você pode escrever uma função sem saber o que ela faz?
configurator
4
@ sunpech: eu não disse isso. Eu apenas disse que você não pode escrever uma função sem saber o que está fazendo. Não é possível. Eu nunca vi isso acontecer, e não vejo como isso poderia acontecer. Talvez eu esteja sendo idiota, mas quando você nomeia uma função DoFoo (), o que diabos você coloca dentro dela?
configurator
2
@ sunpech: Eu nunca disse que os nomes devem ser 'bons' desde o início. Só não consigo ver como você entraria em uma situação em que deseja criar uma função, mas não sabe o que isso fará.
configurador
2

foo e bar . Como ainda não há significado por trás da nomeação de funções / variáveis, uso alguma combinação de Foo e / ou Bar com o que estou tentando definir.

Isso facilita a pesquisa / localização mais tarde, quando eu entendo melhor como deve ser chamado.

Veja também Foobar na wikipedia .

Os termos foobar, foo, bar e baz às vezes são usados ​​como nomes de espaço reservado (também chamados de variáveis ​​metassintáticas) na programação de computadores ou na documentação relacionada a computadores. Eles foram usados ​​para nomear entidades como variáveis, funções e comandos cujo objetivo não é importante e serve apenas para demonstrar um conceito. As próprias palavras não têm significado nesse uso. Às vezes, Foobar é usado sozinho; foo, bar e baz às vezes são usados ​​nessa ordem, quando várias entidades são necessárias.

esponja
fonte
1

Prefixe sua função com algo e dê o nome de melhor foto por enquanto. Por exemplo, uma função que salva todos os produtos para o usuário selecionado no banco de dados pode ser RENAME_SaveAllProductsForTheSelectedUserToTheDatabase()

Código difícil
fonte
Obviamente, nesse caso, você deve apenas nomear a funçãoSaveAllProductsForTheSelectedUserToTheDatabase()
configurator
1

O que eu chamo de variáveis ​​difíceis de nomear, faço um //TODO find a better namecomentário para que eu possa voltar mais tarde para renomeá-lo

Normalmente, quando começo a usar a variável / função / classe, encontro um nome melhor para elas.

user1041
fonte
0

É melhor colocar um bom nome em breve enquanto você tiver o código em mente, do que esperar até mais tarde, quando desejar que o tenha nomeado bem!

Jon Onstott
fonte
0

Quase nunca tenho problemas para encontrar nomes bons e descritivos ... mas, às vezes, a nomeação se torna bastante redundante, pois os nomes de classe e variável são muito semelhantes. WebClient webclient = novo Webclient (uri); ...e similar.

Zaz
fonte
0

Às vezes eu uso zzzz temporariamente.

Uma boa regra para ajudá-lo é esta:

  • Ele retorna um valor booleano e não tem efeitos colaterais: use um adjetivo (comece com é, era), mas nunca no futuro.
  • Ele retorna um tipo diferente e não tem efeitos colaterais: use um substantivo.
  • Não retorna nada, mas faz algo: Em seguida, use um verbo.
  • É uma classe: Então use um substantivo.
ctrl-alt-delor
fonte
-1

No passado, eu costumava usar muito o bob , mas essa seria a única variável com nome incorreto na função / script, porque, caso contrário, o código fica rapidamente ilegível.

(bob é uma ressaca de dias uni - escapando das variáveis ​​de chamada bob e fred)

Estou feliz em usar i para um contador.

Melhor usar nomes significativos, mesmo que não sejam curtos e rápidos.

Dan
fonte
Eu trabalhei com um cara que usava nomes assim para seus aplicativos e classes dentro dele. Talvez seja desnecessário dizer que seu código geralmente era muito ruim.
dash-tom-bang
2
@ dash-tom-band: eu acho que o código dele geralmente é muito bob.
configurator
Se eu posso trabalhar meu nome em alguma notação húngara para uma enumeração, geralmente o faço, mesmo que seja um pouco exagerado. TPropertyEnhancmentTypeEditor = (PETEObtuse, PETEAwful, PETEDispicable);
Peter Turner #
-1

Se eu absolutamente não tenho ideia do nome da variável, o que não acontece há mais de vinte anos ... nomes de antigas namoradas ou mulheres que eu gostaria que fossem namoradas. O último código com esses identificadores foi removido da produção há alguns anos.

David Thornley
fonte
-2

WorkMagic ou Abracadabra.

Tester101
fonte
-2

blá , mas apenas temporariamente. Eu sempre volto e os renomeio para bons nomes de variáveis.

Jason Berkan
fonte
1
Nunca use isso. Nada mal.
Dynamic
-2

Doit (), a (), b (c) xxxx () ....

Claro que eles são refatorados para longe .... geralmente

Preet Sangha
fonte
-3

Eu costumo usar coisas na minha mesa.

  • copo
  • Alt
  • Foo
  • b / a / c (lixo de uma letra)
  • alk (lixo de várias letras pronunciável)

Eu também me inclino para nomes genéricos (pelo menos para funções):

  • troca
  • processo
  • reviseVar
  • funileiro

Isto é para coisas temporárias embora. Eu juro que nada faz para o repositório, tanto de produção menos.

...

Josh K
fonte
Eu sempre me sinto sujo, mas às vezes o nome mais aparente para um método é "Go" ou "DoIt". Sempre que posso criar um nome melhor, faço, mas às vezes é realmente "fazer o trabalho que o nome do programa implica que está prestes a ocorrer". Isso, no entanto, é muito longo para ser usado em um nome de função. :)
dash-tom-bang
@ dash-tom-bang: Por alguma razão, runparece muito melhor do que go. Talvez seja porque todos nós gostaríamos que nossos programas fossem mais rápidos.
configurator