"A", "an" e "the" nos nomes de métodos e funções: Qual é a sua opinião? [fechadas]

16

Tenho certeza de que muitos de nós já vimos nomes de métodos como esse em um ponto ou outro:

  • UploadTheFileToTheServerPlease
  • CreateATemporaryFile
  • WriteTheRecordToTheDatabase
  • ResetTheSystemClock

Ou seja, nomes de métodos que também são frases em inglês gramaticalmente corretas e incluem palavras extras apenas para fazê-las ler como prosa. Pessoalmente, não sou muito fã desses nomes de métodos "literais" e prefiro ser sucinto, embora seja o mais claro possível. Para mim, palavras como "a", "an" e "the" parecem desajeitadas nos nomes dos métodos, e isso torna desnecessariamente longos os nomes dos métodos sem realmente adicionar algo útil. Eu preferiria os seguintes nomes de métodos para os exemplos anteriores:

  • UploadFileToServer
  • CreateTemporaryFile
  • WriteOutRecord
  • ResetSystemClock

Na minha experiência, isso é muito mais comum do que a outra abordagem para escrever os nomes mais longos, mas vi os dois estilos e fiquei curioso para ver o que os outros pensavam sobre essas duas abordagens.

Então, você está no campo "nomes de métodos que parecem prosa" ou "nomes de métodos que dizem o que quero dizer, mas lidos em voz alta como um campo ruim de tradução de idioma estrangeiro para inglês"?

Mike Spross
fonte
7
Eu nunca vi métodos com nomes como WriteTheRecordToTheDatabase. Se alguém fizesse o check-in, eles conversariam seriamente.
Tim Robinson
13
" Please"? Wow
configurador
3
Gostaria apenas de acrescentar que o wordpress possui funções auxiliares de modelo como "the_contents ()", "get_the_post ()" etc.) Isso me incomoda.
Carson Myers
1
@Carson Myers Hah, esse é um exemplo perfeito do mundo real. Devo ter suprimido as memórias da última vez que olhei para o código WordPress :-)
Mike Spross

Respostas:

21

Concordo que os métodos em prosa são ruins com uma exceção:

Casos de teste de unidade

Geralmente, eles nunca são chamados no seu código e aparecem nos relatórios de teste. Como tal, é útil ter leituras com um pouco mais de prosa:

  • AdicionandoACustomerOrderFailWhenCustomersIdIsInvalid: Failed
  • OutOfBoundsPriceReturnsAnError: Passed
  • CanDeleteAnEventFromASeason: Passed

Mesmo isso deve ser feito com moderação, mas posso ver isso como pelo menos um caso em que as adições gramaticais podem tornar um pouco mais fácil expressar o que passou e o que falhou. Isso é claro, a menos que sua linguagem / estrutura forneça um bom mecanismo para descrições de teste na leitura de teste que não sejam nomes de métodos, nesse caso, ignore esse também.

Fishtoaster
fonte
1
+1 para um bom exemplo de onde os nomes dos métodos em prosa podem ser realmente benéficos. É engraçado, porque agora que você mencionou, eu ter feito isso nomes de teste de unidade especificamente ao escrever e, especificamente, então eu sabia o que diabos o teste estava fazendo quando eu corri-los mais tarde.
Mike Spross
Isso é útil e se encaixa na MethodUnderTest_Condition_ExpectedBehaviour convenção de nomeação de teste de unidade sugerida por Roy Osherove . por exemplo AddOrder_WithInvalidCustomerId_Fails, CreateItem_WithOutOfBoundsPrice_ReturnsErroreDeleteEvent_EventExistsInSeason_Succeeds
StuperUser
@StuperUser pelo comportamento esperado, você realmente colocou o resultado esperado do teste e, portanto, não tenho idéia do que o método deve retornar.
simples
@danRhul Fair point, eu não estava suficientemente claro; .._AdditionFailse .._DeletionSucceedsdeveria ser melhor. Eu coloquei o resultado do método, mas como você aponta, eles podem ser confundidos com a terminologia de aprovação / falha de teste.
StuperUser
10

Parafraseando Lawrence de Office Space ...

Não, não, cara, eu acredito que se alguém com quem trabalhei por aqui nomeasse uma função 'UploadTheFileToTheServerPlease', ele receberia seu chute, cara.

GrandmasterB
fonte
10

Tais nomes "longos" não parecem prosa . Quando estão sozinhos - talvez, mas acompanhados com o restante do código, eles apenas fazem mais confusão. Confira:

bool ResultOfTheUpload
      = UploadTheFileToTheServerPlease(TheNameOfTheFile, TheServersAddress);

Yuuuuk! ..

Este não é um texto válido em inglês e, em nenhuma linguagem de programação, ele se parecerá com um. Portanto, não faz sentido gastar bytes em artigos.

P Shved
fonte
1
Um bom exemplo de por que eu não gosto muito dessa abordagem! Quando escrevi a pergunta, eu estava apenas focando nos nomes dos métodos soando como prosa, mas concordo com você: é muito difícil fazer com que o código de chamada seja realmente lido como prosa, portanto, não faz sentido fazer os nomes de funções individuais soarem como escritos Inglês.
Mike Spross
3
Eu sugirobool ResultOfTheGentlyUploadOfTheFileToTheServer
Wizard79
Eu trabalhei com uma pessoa que criou os padrões da empresa onde 'theVariable' e 'aMethod' tinham que ser seguidos. Essa mesma pessoa também gostava de ter todas as linhas de código alinhadas verticalmente.
Chris
7

Da perspectiva dos programadores, "UploadFileToServer" faz mais sentido e é mais fácil de ler e entender do que "UploadTheFileToTheServerPlease".

Mais do que a gramática inglesa, a legibilidade e a compreensão são mais importantes na programação!

Gopi
fonte
Totalmente agree..if eu li o código escrito em primeiro estilo por alguns dias eu tenho certeza que ele vai me deixar louco ..
Naveen
@ Naveen: Eu trabalhei com código como este, e a primeira chance que tive renomeei todos esses métodos. E não tenho certeza se foi apenas o desenvolvedor ou não, mas acho que há uma tendência de fazer com que as funções façam várias coisas quando você as escreve como sentenças, ou seja UploadTheFileAndProcessItAndEmailTheOrdersToTheCustomers, embora esperemos que nada seja tão ruim na vida real.
Mike Spross
@ Mike Então gostaria de refazer o método para 2 métodos diferentes;)
Gopi
2

Dado quantos erros de digitação minha vida, eu acabaria com

* UploadTehFileToTehServerPleaz
* WriteTehRecordToTehDatabase
* ResetTehSystemClock
* ICanHazTehCheezburger

Sério, eu até olhava o nome da minha classe também. Se minha turma fosse chamada "Arquivo", eu provavelmente iria apenas com

*UploadToServer
*DownloadFromServer

Então seria

   File file = new file;
   file.UploadtoServer(ServerAddress);

Apenas um exemplo trivial, mas espero que seja ilustrativo o suficiente.

MIA
fonte
Ele Ele. Na verdade, vi "Teh" aparecer nos nomes dos métodos, seguindo o padrão de nomenclatura "semelhante ao inglês". Quanto ao seu segundo ponto: concordo plenamente, a redundância nos nomes dos métodos é outro problema meu ( File.UploadFileToServer... ugh).
Mike Spross
0

Eu pessoalmente não ligo. Eu os vi e eles não me incomodam. Eu nem pensei neles até outro programador ter discutido sobre eles. Achei chocante que alguém se importasse tanto com algo que importa tão pouco. Quero dizer, ele estava realmente bravo com isso. Mas isso foi no início da minha carreira, há cerca de 11 anos, e desde então eu descobri que os desenvolvedores com raiva de coisas menores são realmente bastante comuns. É por isso que os gerentes de desenvolvedores são tão bem pagos. Eles têm que lidar com desenvolvedores diariamente.

E eu prefiro ver isso do que "UL_FlToSrv".

ElGringoGrande
fonte