Dovrei inserire il tipo di dati di un attributo di classe nel suo nome?

3

La maggior parte degli attributi di classe del mio sistema sono solo testo, ma in questo caso ha più senso collocare gli attributi di questa particolare classe in un singolo hash (da un aspetto "mantenere il codice sorgente carino"). In pratica, viene restituito un elenco di attributi e, invece di scrivere un gruppo di attributi statici per ognuno, li loopò e li raccoglierò in un hash.

È una buona idea denominare questo particolare attributo @contents_hash , a differenza di @contents ? Suppongo che gli utenti possano capire abbastanza rapidamente che @contents.split ' ' restituirà un NoMethodError: undefined method 'split' for Hash , ma a prima vista del codice, è utile sapere subito che questo è un hash? Pensi che renderà ridondante l'implementazione per dire @contents_hash.keys ?

    
posta Droogans 28.08.2013 - 17:45
fonte

2 risposte

2

Metterei il tipo di dati in un identificatore solo se aggiunge chiaramente valore e chiarezza.

Al giorno d'oggi, l'intellisense (o "analisi del codice al volo", come lo chiama Jetbrains) e l'inferenza del tipo hanno praticamente eliminato la necessità di identificare i tipi nei nomi delle variabili. Scrivi in chiaro il codice, in modo che non sia necessario identificare il tipo.

    
risposta data 28.08.2013 - 17:59
fonte
2

Ruby (e altri linguaggi tipizzati dinamici) in genere non inseriscono il tipo nel nome della variabile, soprattutto perché quel tipo potrebbe potenzialmente cambiare. Quel tipo di convenzione di denominazione è generalmente visto più in linguaggi tipizzati staticamente (vale a dire, Visual Basic), perché è un ambiente più sicuro in cui farlo (le variabili non possono cambiare i tipi così facilmente), ma sta cadendo in disgrazia anche lì.

Che succede se da qualche parte hai content = 'some string' ? Bene, ora, se avevi usato content_hash , la variabile avrebbe mentito sul suo tipo. Questo rende le cose confuse.

Invece, pensa a nominare le cose in un modo che rende più chiaro che il tipo è probabile che sia un hash. "content" è piuttosto generico e potrebbe significare una stringa o un hash, ma forse "settings" o "attributes" sarebbe una scelta migliore, perché "settings" / "attributes" ha la connotazione di essere una raccolta di key- coppie di valori (un hash), o almeno una matrice di valori, senza essere effettivamente legati al tipo esatto.

Vedi anche:

risposta data 28.08.2013 - 18:58
fonte

Leggi altre domande sui tag