Esistono convenzioni grammaticali sulle funzioni di denominazione?

4

Ad esempio, ho un Selenium WebDriver e come parte della mia inizializzazione vorrei verificare se sono in grado di istanziarlo e avviare il browser.

Non riesco a trovare un nome appropriato. Esiste una pratica comune, come i metodi di denominazione con effetti collaterali come verbi? Dovrebbe essere una di queste opzioni, o qualcos'altro?

def driver_works(): ...

if driver_works():
    pass
def does_driver_work(): ...

if does_driver_work():
    pass
def is_driver_working(): ...

if driver_is_working():
    pass
def driver_is_working(): ...

if is_driver_working():
    pass
    
posta toriningen 19.06.2017 - 16:29
fonte

2 risposte

6

I nomi fluenti sono preferiti. Questi consentono di leggere il codice ignorando i tipi e la struttura. Preferisci i nomi che si concentrano sull'astrazione:

if driver_is_working():

Anche se alcuni si aggrappano ancora ai prefissi quel tipo di segnale:

if is_driver_working():

Non preferiamo i nomi che ci costringono a manipolare la grammatica inglese:

if does_driver_work():

Non preferiamo i nomi che fanno asserzioni che potrebbero non essere vere a meno che non generino eccezioni:

if driver_works():

E per noi, spero, intendiamo tutti gli sviluppatori. Ma probabilmente intendo solo gli sviluppatori che devono leggere il tuo codice. Gli sviluppatori che scrivono il codice sembrano preferire ogni sorta di cose empie

    
risposta data 19.06.2017 - 16:42
fonte
2

C'è più che ci piace.

  • Ci piace il modulo attivo per funzioni / metodi che fanno qualcosa: piuttosto PopulateList () rispetto a ListPopulation (). Per questo tipo di azione che si esibisce funzioni può aiutare a pensare "VerbNoun ()".

  • Se si tratta di ottenere un valore di ritorno, molti di noi come il nome inizia con "Get". Questo è un po 'lingua / cultura dipendente ma tu difficilmente può andare storto con questo. Per la memorizzazione dei valori, "Set" o "Put" è comune.

  • Per uno stato come nell'esempio, le parole più utilizzate sono "Attiva" e "Abilitato". Altre parole sono accettabili se trasmettono lo stato ma noi incoraggiare l'uso di prefissi come Is, Has o Can. Per il tuo esempio di autista potresti utilizzare IsOperational, IsAvailable, IsReadyToRumble o CanDrive.

  • Non ci piace usare caratteri di sottolineatura se non ce n'è bisogno. Tu vuoi per salvare quelli per la separazione dei domini. Come Class1_DoYourThing e Class2_DoYourThing. Se dovessi scrivere Class1_Do_Your_Thing, potrebbe non farlo essere ovvio quali parti appartengono insieme Questo è particolarmente un problema con gestori di eventi per diverse classi.

Se segui queste linee guida ci renderai molto felici.

    
risposta data 19.06.2017 - 21:45
fonte

Leggi altre domande sui tag