Convenzioni sulla procedura di denominazione - Dove posizionare l'aggettivo in un verbo seguito da una convenzione oggetto

1

Sto leggendo su Coding Complete book la seguente dichiarazione:

To name a procedure, use a strong verb followed by an object A procedure with functional cohesion usually performs an operation on an object. The name should reflect what the procedure does, and an operation on an object implies a verb-plusobject name. PrintDocument(), CalcMonthlyRevenues(), CheckOrderlnfo(), and RepaginateDocument() are samples of good procedure names.

Nel mio codice applico questo principio ma alcune routine hanno un aggettivo di fronte all'esempio del nome:

Attualmente sto usando

  _getFirstView()
  _getLastView()
  _getActiveView()
  _getActiveMasterView()

Mi chiedo se questa denominazione potrebbe essere migliorata, ad esempio utilizzando la seguente variante (in alcuni modi in cui li hanno trovati più visivamente organizzati)

  _getViewFirst()
  _getViewLast()
  _getViewActive()
  _getViewMasterActive()
...

Che cos'è una buona pratica che ha senso in questo scenario?

    
posta Radex 27.04.2017 - 15:54
fonte

4 risposte

8

No, non devi cambiare l'ordine delle parole dal loro ordine naturale in linguaggio naturale.

Il punto delle linee guida che stai citando è quello di garantire che i nomi dei metodi siano leggibili e informativi. Nessun guadagno di informatività che potreste ottenere rendendo i nomi dei metodi compatibili con l'un l'altro può superare la perdita di leggibilità da tale riordino. getFirstView() è perfettamente a posto (e getViewFirst() è in realtà fuorviante, poiché implica che è importante chiamarlo prima di qualche altro metodo).

    
risposta data 27.04.2017 - 16:01
fonte
4

Non sono un esperto di lingua inglese, ma dalla mia interpretazione dei consigli del libro Completo del codice, sembra che i tuoi nomi di metodi esistenti siano già conformi a tale convenzione.

Mentre lo leggevo, Code Complete usa la frase "un oggetto" che mi suggerisce che il consiglio di denominazione del metodo riguarda piuttosto la descrizione di uno specifico oggetto identificabile non solo il nome di un oggetto.

Ovviamente, un sostantivo è solitamente la parte più importante della descrizione di un oggetto, e quando esiste solo uno di questi oggetti sarebbe sufficiente da solo. Tuttavia, quando nello stesso contesto esistono più oggetti che condividono lo stesso nome, un solo sostantivo non è sufficiente per identificare un solo oggetto.

Quindi, supponendo che il consiglio riguardi casi sia di oggetti singolari che di oggetti tra collezioni / elenchi / ecc, la frase 'un oggetto' suona ancora come un singolo oggetto che può o non può essere identificato da una combinazione del suo nome e uno o più aggettivi che descrivono gli attributi di quel nome.

Ad esempio, il HappyDwarf è chiaramente distinto dal GrumpyDwarf , il DopeyDwarf o il BashfulDwarf , ma il Dwarf è ambiguo e potrebbe riferirsi a nessuno di essi.

    
risposta data 28.04.2017 - 08:06
fonte
2

La tua denominazione è già conforme alla convenzione specificata.

Le convenzioni dicono verbo + oggetto. Il verbo dell'esempio è "get", l'oggetto è "first view", "last view" ecc.

Si noti che "oggetto" nella terminologia grammaticale non è necessario un singolo nome, ma può essere una clausola che include aggettivi, o anche un'intera frase.

La regola come specificato non dice nulla sugli aggettivi, ma l'esempio CalcMonthlyRevenues() mette l'aggettivo prima del nome che modifica - esattamente come nell'inglese normale e come nei tuoi esempi.

    
risposta data 28.04.2017 - 09:58
fonte
-1

Currently I am using

 _getFirstView()
 _getLastView()
 _getActiveView()
 _getActiveMasterView()

Queste presumibilmente non sono procedure. Sono invece funzioni. La differenza tra i due: una procedura altera lo stato e preferibilmente non restituisce nulla, mentre una funzione restituisce qualcosa e preferibilmente lascia lo stato invariato. In un mondo ideale, i due non si incontrano mai. Nel mondo reale, a volte si incontrano. Una funzione pop() , ad esempio, altera entrambi lo stato e restituisce un valore.

Per quanto riguarda le tue funzioni, hai bisogno del prefisso get ? Che valore aggiunge? In molti casi di getThis() , getThat() e getTheOtherThing() funzioni, il prefisso get è superfluo, fuorviante o entrambi. Ciò porta alla convenzione di denominazione ampiamente utilizzata dell'uso di frasi di nome (ad esempio firstView() , lastView() , ecc.) Per nomi di funzioni, frasi verbali per nomi di procedure (ad esempio PrintDocument() , CalcMonthlyRevenues() , ecc.).

    
risposta data 28.04.2017 - 05:10
fonte

Leggi altre domande sui tag