Sono confuso riguardo alla scelta dei nomi per le mie funzioni in Python . A volte le funzioni integrate Python sono imperative come: print
function e string method find
. A volte non sono tali: len
il suo nome non è imperativo come calculate_len
, per esempio, e type
non è find_type
.
Posso capire che print
restituisce un valore che non usiamo (cioè None
) e fa qualcosa (cioè mostra una stringa sullo schermo), quindi il suo nome è imperativo.
Ma len
restituisce un valore che usiamo e fa qualcosa (cioè calcolando quanti elementi ci sono in una sequenza o una mappatura) e il suo nome non è imperativo . D'altra parte, il metodo di stringa find
(come len
) restituisce un valore che usiamo e fa qualcosa, e il suo nome è imperativo .
Ciò che ha reso questa domanda è che ho inserito uno script che crittografa e decodifica la stringa usando il codice Caesar per essere revisionato. Il revisore ha detto che:
Just a gut feeling: functions do stuff. So a good name for a function is an imperative: I'd use
rotate_letter
instead ofrotated_letter
.
rotated_letter
restituisce una stringa a lettera singola che rappresenta una lettera ruotata di un numero. Non so cosa sia meglio, ho usato rotated_letter
perché restituisce un valore, come randint
funzione in modulo casuale , non è generate_randint
.
Quindi, in questo caso, come dovrei nominare una funzione che restituisce un valore da utilizzare? Devo pronunciare il nome imperativo o solo un nome . In altri casi è ovvio come farlo, ad esempio funzioni booleane , come is_even
e is_palindrome
lo rendiamo semplicemente come una sì / nessuna domanda , e funziona anche solo per fare e restituire valori non utilizzati (cioè None
), come print
e list metodo sort
.