ti-enxame.com

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

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

  • UploadTheFileToTheServerPlease
  • CreateATemporaryFile
  • WriteTheRecordToTheDatabase
  • ResetTheSystemClock

Ou seja, nomes de métodos que também são sentenças em inglês gramaticalmente corretas e incluem palavras extras apenas para torná-las lidas como prosa. Pessoalmente, não sou um grande fã desses nomes de métodos "literais" e prefiro ser sucinto, embora sendo o mais claro possível. Para mim, palavras como "a", "an" e "the" parecem simplesmente estranhas em nomes de métodos e tornam os nomes de métodos desnecessariamente longos, sem realmente acrescentar nada de útil. Eu preferiria os seguintes nomes de método para os exemplos anteriores:

  • UploadFileToServer
  • CreateTemporaryFile
  • WriteOutRecord
  • ResetSystemClock

Na minha experiência, isso é muito mais comum do que a outra abordagem de escrever os nomes mais longos, mas eu vi os dois estilos e estava curioso para ver o que as outras pessoas 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 uma tradução ruim de língua estrangeira para inglês"?

16
Mike Spross

Concordo que os métodos de prosa são péssimos, com uma exceção:

Casos de Teste de Unidade

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

  • AddedACustomerOrderFailWhenCustomersIdIsInvalid: Failed
  • OutOfBoundsPriceReturnsAnError: Aprovado
  • CanDeleteAnEventFromASeason: aprovado

Mesmo isso deve ser feito com moderação, mas posso ver como pelo menos um caso em que acréscimos gramaticais podem tornar um pouco mais fácil expressar o que foi aprovado 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 diferente de nomes de método, caso em que ignore este também.

21
Fishtoaster

Para parafrasear 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 seria chutado, cara.

10
GrandmasterB

Esses nomes "longos" não soam como prosa. Quando estão sozinhos - talvez, mas acompanhados com o resto do código, eles apenas bagunçam ainda mais. Confira:

bool ResultOfTheUpload
      = UploadTheFileToTheServerPlease(TheNameOfTheFile, TheServersAddress);

Yuuuuk! ..

Este não é um texto inglês válido e em nenhuma linguagem de programação será semelhante a um. Portanto, não há sentido em gastar bytes em artigos.

10
P Shved

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 importam mais na programação!

7
Gopi

Considerando quantos erros de digitação minha vida apresenta, eu acabaria

* UploadTehFileToTehServerPleaz
* WriteTehRecordToTehDatabase
* ResetTehSystemClock
* ICanHazTehCheezburger

Sério, eu até olhava qual era o nome da minha turma também. Se minha classe se chamasse "Arquivo", provavelmente iria apenas

*UploadToServer
*DownloadFromServer

Então seria

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

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

2
MIA

Eu pessoalmente não me importo. Eu os vi e eles não me incomodam. Eu nem pensei sobre eles até que outro programador começou a reclamar deles. Achei chocante que alguém se importasse tanto com algo que pouco importa. Quero dizer, ele estava realmente zangado com isso. Mas isso foi no início da minha carreira, cerca de 11 anos atrás, e desde então descobri que os desenvolvedores ficarem irritados com pequenas coisas é na verdade bastante comum. É por isso que os gerentes de desenvolvedores são tão bem pagos. Eles têm que lidar com os desenvolvedores diariamente.

E eu prefiro ver isso do que "UL_FlToSrv".

0
ElGringoGrande