Denominazione: objectAction o actionObject? [chiuso]

1

La domanda stored procedure denominazione delle convenzioni e L'eccellente articolo di Making Wrong Code Wrong diJoel si avvicina di più alla mia domanda, ma sto cercando un insieme più generale di criteri da usare nel decidere come denominare i moduli contenenti codice (classi, oggetti, metodi, funzioni, widget o qualsiasi altra cosa).

L'inglese (il mio unico linguaggio umano) è strutturato come oggetto-azione (cioè closeFile, openFile, saveFile) e poiché quasi tutti i linguaggi per computer sono basati sull'inglese, questa è la convenzione più comune.

Tuttavia, nel tentativo di mantenere il codice correlato ravvicinato ed essere ancora in grado di trovare le cose, ho trovato l'azione oggetto (cioè fileClose, fileOpen, fileSave) per essere molto interessante. Un buon numero di lingue umane non inglesi segue anche questa struttura.

Dubito che una forma sia universalmente superiore, ma quando dovrebbe essere utilizzata per perseguire l'obiettivo di assicurarsi che il codice errato appaia negativo?

    
posta DocSalvager 26.06.2013 - 13:06
fonte

4 risposte

4

actionObject suona come un metodo che utilizzeresti per fare qualche azione con / nell'oggetto.

objectAction suona come un aggregato di informazioni, sull'esecuzione / risultato dell'azione eseguita su un oggetto.

Quindi generalizzerei e direi:

  • actionObject è appropriato per i metodi
  • objectAction, sull'aggregazione delle informazioni, come semplici classi e strutture .

Un esempio potrebbe essere:

  • ReportSecurityFlaw: sembra un metodo per informare un difetto di sicurezza
  • SecurityFlawReport: sembra un oggetto che rappresenta i dati estratti dai difetti di sicurezza già memorizzati
risposta data 26.06.2013 - 13:18
fonte
2

related code close together and still be able to find things

ecco a cosa servono i pacchetti. La differenza tra fileSave o saveFile è insignificante.

    
risposta data 26.06.2013 - 13:17
fonte
1

Dovresti considerare l'importanza delle entità coinvolte nella funzione che stai descrivendo e applicare una convenzione di denominazione basata su quella, probabilmente nominando la più importante prima. Proverò a chiarire con alcuni esempi.

Il paradigma orientato agli oggetti considera gli "oggetti" come le entità più importanti con cui lavori, e scoprirai che gli oggetti quasi sempre sempre vengono prima quando definiscono i comportamenti. Se si chiama un metodo di istanza di un oggetto, l'istanza viene denominata prima del nome del metodo ( File f; ... f.close(); - f precede close(); ). Se chiami un metodo di classe, la classe viene chiamata prima del metodo ( File::open(fileName) - File precede open(fileName) ).

D'altra parte, in un paradigma più algebrico, potresti considerare le operazioni più importanti degli oggetti contro cui operano. Se voglio aggiungere due interi (ignorando la possibile esistenza di un operatore + ), preferirei denominare l'operazione addIntegers , piuttosto che integersAdd() , perché è più importante per me che sto eseguendo un Oltre a quello i numeri coinvolti capita di essere numeri interi.

Per tornare al tuo esempio: quale parte di openFile considereresti più importante? open , che descrive l'operazione o File , che definisce il dominio in cui si applica l'operazione? (tenendo presente il punto di NimChimpsky che i pacchetti risolvono già il problema del raggruppamento del codice correlato insieme ), penserei che open è più concettualmente importante di quello che hai a che fare con i file (ad esempio, il codice chiamante potrebbe decidere di aprire un socket invece di un file, che potrebbe non avere alcun effetto notevole sul resto del codice chiamante), quindi dovrebbe probabilmente viene prima nel nome della funzione.

    
risposta data 26.06.2013 - 14:55
fonte
1

Real World - Vai con Object-Action

Ho lavorato in un piccolo negozio che ha creato e ospitato più di 600 siti web. Abbiamo accumulato un'enorme libreria di codici e quando stai cercando un set di codice comlpete che puoi prendere in prestito da un sito e collegarlo a un altro sito non ci vuole molto tempo per determinare che la denominazione Object-Action la convenzione funziona meglio.

  • Chi ha il widget PressRelease-XXXXXXX ? (script di codice e sql)
  • Quale PhotoGallery-XXXXXXX ho bisogno?

Questa convenzione di denominazione semplifica la ricerca, il pacchetto, la distribuzione e il debug.

    
risposta data 26.06.2013 - 22:13
fonte