2012-08-30 16 views
64

Come determinare come chiamare una classe XHelper o XUtils?Quali sono le differenze tra le classi Helper e Utility?

A mio parere:

Helper classe, è una classe che può essere instantiate e fare un certo lavoro di business

Utils classe, è una classe statica che eseguono le operazioni di piccole e ripetitive su un tipo di istanza (esempio di classi utils ArrayUtils o IOUtils di Apache)

+3

"Lavoro aziendale" è la distinzione fondamentale qui. Trovo utile una convenzione per usare 'Utils' per una classe statica che possa essere usata ovunque nell'organizzazione o in un'altra organizzazione. Una classe 'Helper' ha un codice comune che può essere riutilizzato all'interno di un progetto e ha dipendenze all'interno del progetto. Certo, non esiste una regola generalmente accettata, ma trovo ciò utile. –

risposta

57

Esistono molti stili di denominazione da utilizzare. Suggerirei Utils solo perché è più comune.

Una classe di utilità ha solo metodi statici ed è stateless. Non potresti creare un'istanza di tale classe.

Un helper può essere una classe di utilità o può essere di stato o richiedere la creazione di un'istanza. Eviterei questo se possibile.

Se è possibile rendere il nome più specifico. per esempio. se ha metodi di ordinamento, renderlo XSorter

Per gli array si possono trovare classi di supporto come

Array 
Arrays 
ArrayUtil 
ArrayUtils 
ArrayHelper 

BTW una breve portata di mano per una classe di utilità è un enum senza istanze

enum XUtils {; 
    static methods here 
} 

If è necessario implementare un'interfaccia, userei un Singleton stateless.

enum XHelper implements RequiredInterface { 
    INSTANCE; 
    // no instance fields. 
} 
+0

Questo in questo post http://stackoverflow.com/a/2135797/787698, che Xutils è una classe statica senza dipendenze. A cosa stai pensando? – jakcam

+0

@jakcam Punto interessante.Un aiutante potrebbe essere stato e richiedere un'istanza. Userei una classe di utilità senza stato e senza istanze, se possibile. –

+0

Che cosa intendi per Xutils è una classe statica con ** nessuna dipendenza **? – jakcam

7

In generale? È del tutto arbitrario. Non ci sono regole per questo.

1

Non c'è una risposta definitiva per questo. Scopri uno schema di denominazione e seguilo. Assegnare un nome ai pacchetti e alle classi è una parte importante dell'architettura del software e nessuno può prendere questa decisione lontano da te.

Mi piace molto meglio l'XHelper, ma vedo XUtils più spesso in codice estraneo.

Mi piace anche lo schema di denominazione "plurale" troverete sia nel JDK e Guava:

se un offerte classe con Collection oggetti, si chiama Collections

Array> Array (JDK)
List> liste (guava)
Mappa> Mappe (guava)

ecc

Problemi correlati