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_letterinstead 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 .