"A", "an" e "the" nei nomi di metodi e funzioni: cosa ne pensi? [chiuso]


16

Sono sicuro che molti di noi hanno visto nomi di metodi come questo in un punto o nell'altro:

  • UploadTheFileToTheServerPlease
  • CreateATemporaryFile
  • WriteTheRecordToTheDatabase
  • ResetTheSystemClock

Cioè, nomi di metodi che sono anche frasi inglesi grammaticalmente corrette, e includono parole extra puramente per farle leggere come in prosa. Personalmente, non sono un grande fan di tali nomi di metodi "letterali" e preferisco essere succinto, pur essendo il più chiaro possibile. Per me parole come "a", "an" e "the" sembrano semplicemente imbarazzanti nei nomi dei metodi, e rende i nomi dei metodi inutilmente lunghi senza aggiungere davvero nulla di utile. Preferirei i seguenti nomi di metodo per gli esempi precedenti:

  • UploadFileToServer
  • CreateTemporaryFile
  • WriteOutRecord
  • ResetSystemClock

Nella mia esperienza, questo è molto più comune dell'altro approccio di scrivere i nomi più lunghi, ma ho visto entrambi gli stili ed ero curioso di vedere quali erano i pensieri degli altri su questi due approcci.

Quindi, sei nel campo "nomi dei metodi che leggono come in prosa" o "nomi dei metodi che dicono cosa intendo, ma leggi ad alta voce come un brutto campo di traduzione da lingua straniera a inglese"?


7
Non ho mai visto metodi con nomi come WriteTheRecordToTheDatabase. Se qualcuno effettuasse il check-in, farebbe una seria conversazione.
Tim Robinson,

13
" Please"? Wow
configuratore

3
Vorrei solo aggiungere che wordpress ha funzioni di supporto del modello come "the_contents ()," "get_the_post ()," ecc. Mi fa venire fuori di testa.
Carson Myers,

1
@Carson Myers Hah, questo è un perfetto esempio del mondo reale di questo. Devo aver soppresso i ricordi dell'ultima volta che ho guardato il codice WordPress :-)
Mike Spross

Risposte:


21

Concordo sul fatto che i metodi di prosa fanno schifo con un'eccezione:

Casi di unit test

Questi generalmente non vengono mai chiamati nel tuo codice e vengono visualizzati nei rapporti di prova. Come tale, è utile avere letture con un po 'più di prosa:

  • Aggiunta ACustomerOrderFailWhenCustomersIdIsInvalid: non riuscita
  • OutOfBoundsPriceReturnsAnError: Passed
  • CanDeleteAnEventFromASeason: superato

Anche questo dovrebbe essere fatto con parsimonia, ma posso vederlo come almeno un caso in cui le aggiunte grammaticali possono rendere un po 'più facile esprimere ciò che è passato e ciò che è fallito. Questo ovviamente, a meno che il tuo linguaggio / framework non fornisca un buon meccanismo per le descrizioni dei test nella lettura dei test oltre ai nomi dei metodi, nel qual caso ignora anche questo.


1
+1 per un buon esempio di dove i nomi dei metodi in prosa possono effettivamente essere utili. E 'divertente, perché ora che me lo dici, io ho fatto questo particolare quando si scrive i nomi di unit test, e in particolare quindi sapevo cosa diavolo il test stava facendo quando mi sono imbattuto in seguito.
Mike Spross,

È utile e si adatta alla MethodUnderTest_Condition_ExpectedBehaviour convenzione di denominazione di unit test suggerita da Roy Osherove . ad es AddOrder_WithInvalidCustomerId_Fails. CreateItem_WithOutOfBoundsPrice_ReturnsErroreDeleteEvent_EventExistsInSeason_Succeeds
StuperUser

@StuperUser per il comportamento previsto, hai effettivamente messo i risultati del test attesi e quindi non ho idea di cosa dovrebbe restituire il metodo.
edibl

@danRhul Il punto giusto, non ero abbastanza chiaro; .._AdditionFailse .._DeletionSucceedsdovrebbe essere migliore. Ho messo il risultato del metodo, ma come fai notare, potrebbero essere confusi con la terminologia del superamento / fallimento del test.
Stuper:

10

Per parafrasare Lawrence da Office Space ...

No, no, amico, credo che se qualcuno con cui ho lavorato qui avesse chiamato una funzione "UploadTheFileToTheServerPlease", si sarebbe preso a calci, amico.


10

Tali nomi "lunghi" non sembrano prosa . Quando sono soli, forse, ma accompagnati dal resto del codice, fanno solo più casino. Controlla:

bool ResultOfTheUpload
      = UploadTheFileToTheServerPlease(TheNameOfTheFile, TheServersAddress);

Yuuuuk! ..

Questo non è un testo inglese valido e in nessun linguaggio di programmazione sembrerà uno. Quindi non ha senso spendere byte in articoli.


1
Un buon esempio del perché non mi piace così tanto questo approccio! Quando ho scritto la domanda, mi sono concentrato solo sui nomi dei metodi da soli che suonano come prosa, ma sono d'accordo con te: è piuttosto difficile far sì che il codice chiamante sia effettivamente letto come prosa, quindi non ha senso far sembrare i nomi delle singole funzioni come scritti Inglese.
Mike Spross,

3
Suggeriscobool ResultOfTheGentlyUploadOfTheFileToTheServer
Wizard79,

Ho lavorato con una persona che ha creato standard aziendali in cui "theVariable" e "aMethod" dovevano essere seguiti. Alla stessa persona piaceva anche che tutte le righe di codice fossero allineate verticalmente.
Chris,

7

Dal punto di vista dei programmatori "UploadFileToServer" ha più senso e facilità di lettura e comprensione rispetto a "UploadTheFileToTheServerPlease".

Più della grammatica inglese, la leggibilità e la comprensibilità contano di più nella programmazione!


Totalmente d'accordo..se leggo il codice scritto nel primo stile per alcuni giorni, sono sicuro che mi farà impazzire ..
Naveen,

@Naveen: ho lavorato con codice come questo e la prima volta che ho avuto ho rinominato tutti quei metodi. E non sono sicuro se fosse solo lo sviluppatore o no, ma penso che ci sia la tendenza a rendere le funzioni di fare più cose quando li si scrive come frasi, vale a dire UploadTheFileAndProcessItAndEmailTheOrdersToTheCustomers, anche se si spera nulla di abbastanza male nella vita reale.
Mike Spross,

@Mike Quindi rifarei il metodo su 2 metodi diversi;)
Gopi

2

Dato il numero di errori di battitura della mia vita, finirei

* UploadTehFileToTehServerPleaz
* WriteTehRecordToTehDatabase
* ResetTehSystemClock
* ICanHazTehCheezburger

Scherzi a parte, guarderei anche a come si chiamava la mia classe. Se la mia classe si chiamasse "File", probabilmente andrei semplicemente con

*UploadToServer
*DownloadFromServer

Così sarebbe

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

Solo un esempio banale, ma speriamo che sia abbastanza illustrativo.


Hehe. In realtà ho visto "Teh" insinuarsi nei nomi dei metodi seguendo il modello di denominazione "inglese". Per quanto riguarda il tuo secondo punto: sono completamente d'accordo, la ridondanza nei nomi dei metodi è un'altra mia peeve pet ( File.UploadFileToServer... ugh).
Mike Spross,

0

Personalmente non mi interessa. Li ho visti e non mi danno fastidio. Non ci ho nemmeno pensato fino a quando un altro programmatore non si è arrabbiato con loro. Ho trovato scioccante che qualcuno si preoccupasse così tanto di qualcosa che conta così poco. Voglio dire, era davvero arrabbiato per questo. Ma è stato all'inizio della mia carriera, circa 11 anni fa, e da allora ho scoperto che gli sviluppatori arrabbiati per le cose minori sono in realtà abbastanza comuni. Ecco perché i gestori degli sviluppatori vengono pagati così bene. Devono avere a che fare con gli sviluppatori su base giornaliera.

E preferirei vederlo piuttosto che "UL_FlToSrv".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.