Usa i verbi con le funzioni, i nomi con le classi - per quanto riguarda le interfacce? [chiuso]

22

Ok, capisco le normali convenzioni dell'uso di verbi con funzioni e nomi con classi. Che dire delle interfacce? C'è qualche metodologia quando si presentano nomi di interfacce che potrebbero non essere così ovvi?

Giusto per chiarire, non sto parlando se mettere un "io" davanti al nome o se usare camelCase o PascalCase. Mi sto interrogando sul metodo per trovare un nome chiaro e semantico per un'interfaccia.

Modifica Sono ossessionato da come nominare un'interfaccia nel modo più chiaro. Immagino che debba essere anche un nome perché quando penso alle classi di nominare penso al più vicino oggetto del mondo "reale" a cui possa riferirsi. Suppongo che le interfacce del mondo reale siano cose come tastiera, mouse, telecomando, schermo ATM. Questi sono tutti i nomi. In ogni caso, qualsiasi comprensione aggiuntiva su un buon modo per formulare i nomi delle interfacce sarebbe apprezzata.

    
posta programmer 14.07.2012 - 17:57
fonte

6 risposte

21

Direi che dipende da cosa definisce l'interfaccia. In alcuni casi, quando l'interfaccia è piuttosto specifica e dettagliata, penso che un nome sia il migliore. Gli esempi sono IList , ICollection .

A volte, però, un'interfaccia è più dedicata all'aggiunta di alcune caratteristiche generali a una classe. In tal caso, ritengo che un aggettivo sia il migliore. Gli esempi sono IDisposable , IEnumerable , ...

Forse un altro modo per pensarci è quante "abilità" definisce la tua interfaccia.

Ad esempio, l'interfaccia IList<T> definisce queste abilità: Aggiungi, Cancella, Contiene, Inserisci, Rimuovi, ... Queste sono tutte proprietà di un elenco in modo che IList sia un buon nome.

IDisposable invece definisce solo un'abilità: Dispose. Quindi è adatto a tutto ciò che è usa e getta. Da qui il nome IDisposable .

    
risposta data 14.07.2012 - 18:08
fonte
4

Dato che un'interfaccia è in realtà solo un'espressione del "cosa" ma non del "come" di un tipo, li chiamerei nello stesso modo in cui si nominano le classi, almeno da una parte della prospettiva del parlato. L'unica cosa che potrei aggiungere a questo è che saranno spesso più generali degli implementatori specifici (ad esempio, l'interfaccia "Cliente" potrebbe avere implementatori "ProspectiveCustomer" e "PayingCustomer").

    
risposta data 14.07.2012 - 18:06
fonte
4

Un'interfaccia descrive il comportamento, quindi i nomi dovrebbero dirlo. Non sono sicuro di una regola per questo, ma saprai il nome quando lo ascolterai.

Alcuni esempi:

Flyable      - Can Fly
Workable     - Can work
Negotiatable - Can negotiate.

Penso che non sia corretto denominare le interfacce con I e chiamare Set con ISet perché, come sviluppatore, non dovresti essere preoccupato che si tratti di un'interfaccia o di una classe. Vedo che questa pratica non esiste in Java ora.

    
risposta data 15.07.2012 - 17:20
fonte
0

Un'interfaccia è usata come una classe. Pertanto, dovrebbe anche essere nominato con un nome quando si assegnano nomi alle classi con nomi. Preferisci nomi astratti, ad esempio "Veicolo" quando le classi sono "Car" e "Camion".

    
risposta data 14.07.2012 - 18:06
fonte
0

Risposta rapida: l'interfaccia riguarda l'aggiunta di un SET di abilità, caratteristiche, limiti comuni o interconnessioni tra entità, classi, modelli, concetti, ecc.

Una cosa sull'aggiunta di un comportamento comune alle classi e alle entità, e poi verrà visualizzato un buon nome significativo per identificare l'insieme delle caratteristiche realizzate.

Interfaccia Naming like: IStateMachineBuilder, IUserContextProviderBuilder, IEntityBuilderBuilder, IActiveAware, etc. probabilmente spiega il concetto.

    
risposta data 14.07.2012 - 18:20
fonte
0

Dipende, se l'interfaccia contiene solo metodi sarà bene chiamarla usando un verbo come "Azioni" dove come se rappresenti una classe generica che contiene campi statici e finali, quindi possiamo usare un nome generico come " veicolo "

    
risposta data 02.12.2015 - 17:33
fonte

Leggi altre domande sui tag