Denominazione della classe astratta Java

9

Esempio:

Crei una classe astratta per le azioni Ajax. Diverse azioni Ajax estenderanno tutte questa classe.

Problema:

  1. Denominate la classe AjaxAction o AbstractAjaxAction?
  2. Quando crei sottoclassi, li chiami:
    • Azione
    • AjaxAction
    • Basta nominarli cosa sono

Non sono stato in grado di trovare la convenzione "ufficiale". Non vedo la necessità del prefisso "Abstract" o di qualsiasi convenzione di denominazione richiesta nelle sottoclassi. (Potrebbe comunque adattarsi, a seconda.)

C'è una convenzione ufficiale? Potresti collegarmi ad esso? E quali sono le tue opinioni su questo argomento?

    
posta Michael K 24.12.2010 - 19:23
fonte

4 risposte

16

Quando possibile, cerco di lasciare i dettagli di implementazione tra i nomi, incluso un prefisso / suffisso per una classe astratta o un'interfaccia.

Un posto dove cercare guida / ispirazione sulla denominazione è l'API Java. Non riesco a pensare a nessuna parte che usi il prefisso (con un'eccezione eccezionale è l'API Collections, che usa pesantemente il prefisso Abstract). La seguente ricerca produrrà alcuni buoni esempi:

"public abstract class" at download.oracle.com/javase/6

Troverai che le classi astratte si chiamano qualcosa di astratto e le sottoclassi concrete sono nominate qualcosa di più concreto. Ad esempio, la classe astratta Reader ha sottoclassi in calcestruzzo BufferedReader , StringReader , InputStreamReader , ecc.

Dato che le sottoclassi concrete sono solo versioni più specifiche della tua classe astratta, è intento rivelatore scegliere i tuoi nomi allo stesso modo. Nel tuo esempio, vorrei nominare la classe astratta AjaxAction e usarla nei nomi delle sottoclassi concrete ( SpecificAjaxAction ).

    
risposta data 25.12.2010 - 01:12
fonte
12

Scegli qualcosa e sii coerente. Sia che tu usi il suffisso Base per indicare una classe di base voluta, o il prefisso Abstract , devi solo essere coerente a riguardo.

Ci sono tante opinioni su questo genere di cose quanti sono, beh, i programmatori. La mia opinione, per quello che vale, in quanto tale coerenza nella denominazione, all'interno di un progetto (o gruppo di sviluppo o qualsiasi altra cosa) è più importante di qualsiasi schema di denominazione specifico.

    
risposta data 24.12.2010 - 21:01
fonte
4

Vorrei nominare la classe astratta AjaxActionBase e le classi figlio suffisso con "Azione" o "AjaxAction", a seconda di quale risultato più leggibile per le azioni che dovevo creare.

    
risposta data 24.12.2010 - 19:50
fonte
0

Preferisco inserire un suggerimento che una classe sia astratta nel nome per un motivo semplice ma molto importante:

  • È meglio costruire le tue API attorno alle interfacce anziché alle classi astratte.
  • Vuoi utilizzare il nome semplice ad es. "Azione" per nominare la tua interfaccia. Vedi ad esempio List o Map nell'API Java Collections: tutte queste sono interfacce.

Quindi chiamerei in genere una classe astratta di primo livello o AbstractAction o BaseAction. A meno che non ci sia un bisogno molto specifico, normalmente non renderlo pubblico, in modo che gli utenti del codice siano guidati nell'utilizzo dell'interfaccia. Le astratte classi base di solito dovrebbero essere un dettaglio di implementazione piuttosto che una funzionalità della tua API, a meno che tu non sia molto molto attento su come desideri che le persone le estendano.

    
risposta data 29.07.2011 - 12:07
fonte

Leggi altre domande sui tag