che cos’è un nome ?

There are only two hard things in Computer Science: cache invalidation and naming things.

— Phil Karlton

Effettivamente, nello sviluppo di un software, uno degli aspetti sorprendentemente più complessi è attribuire un decente nome alle variabili, alle classi, ai files e anche alle stesse applicazioni…..

Esistono molti ottimi testi che spiegano lo stile ottimale per denominare variabili,  metodi, classi.

Questi testi insegnano anche che il nome di un metodo deve indicare un’azione, mentre il nome di una variabile deve indicare l’entità su cui agisce l’azione. Le metodologie OOP ci hanno anche liberato dall’imbarazzo di dover chiamare una funzione

PrintInvoiceForCustomer(custId, ndoc)

e oggi possiamo rifugiarci in un molto più rassicurante

Customer.find(custId).invoices.find(ndoc).print

ma rimane sempre il problema di inventare nomi plausibili per tutti questi elementi.

Gli sviluppatori non anglofoni inoltre corrono rischi ancora maggiori:

  • utilizziamo l’italiano (???)
  • l’inglese (per essere poi accusati di esterofilia dai colleghi)
  • un mix dei due (aiutoooo) ?

Inoltre certi ambienti di sviluppo (Ruby on Rails è un esempio) appoggiano il naming convention per ridurre l’indicazione esplicita di relazioni e dipendenze ( il modello è singolare, la tabella che lo rende persistente deve avere lo stesso nome in forma plurale ecc), ma singolare e plurale hanno un significato avendo espresso in inglese i nomi, cosa succede se creiamo la classe Veicolo?  dovremo abbinarla alla tabella veicolos ?????

E cosa mi dite del refactoring?  riscrivete e adattate gli algoritmi ma variabili e classi vengono rinominate di conseguenza?

Forse che, quella che noi chiamiamo rosa, cesserebbe d’avere il suo profumo, se la chiamassimo con un altro nome?

 William Shakespeare