Perché uno sviluppatore dovrebbe creare una classe pubblica con tutte le proprietà statiche?

6

Uno sviluppatore precedente ha un paio di classi pubbliche che non ereditano da altre classi ma sono piene di proprietà statiche. È un altro modo di creare una struttura o enum? Si tratta di una tecnica più vecchia o più recente di alloggiamento dei dati statici a cui fare riferimento? Trovo strano / diverso vedere una classe costruita in questo modo, ma mi sto chiedendo quali altri pensieri o sentimenti dei programmatori siano riguardo a ciò che questo programmatore stava cercando di realizzare.

Questo è un esempio di ciò che sto vedendo ...

    public class CashRegister
    {
        public static decimal OneDollarBill
        {
            get { return (decimal)1; }
        }

        public static decimal TenDollarBill
        {
            get { return (decimal)10; }
        }
    }
    
posta user23656 14.06.2013 - 16:25
fonte

5 risposte

4

Divertente, non riesco a immaginare perché utilizzi un enum se si tratta solo di rappresentazioni leggibili da umani di una varietà di numeri.

Le enumerazioni sono buone per un gruppo di valori di testo che non hanno rappresentazioni numeriche.

public enum Days
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

Sono anche buoni per l'enumerazione matematica ( State = State ++ ). In C #, sono stati progettati anche per gestire facilmente le bandiere.

Ma per quello che fai lì, preferisco di gran lunga una classe statica. In definitiva, non è diverso, ma esprime il fatto che non mi aspetto che sia enumerabile.

Nel tuo esempio, sono più disturbato dall'uso di (decimal)1 , che crea un costante int e lo converte in un decimale, piuttosto che in 1M che sarebbe un decimale costante.

    
risposta data 14.06.2013 - 16:55
fonte
2

Come hai detto, questo tipo di classe può comportarsi come un enum, vedere il modello int enum (visto almeno in java prima che java introducesse le enumerazioni come classe).

Un altro motivo potrebbe essere raggruppare tutti i tipi di piccoli metodi di utilità, come la gestione di xml, costanti e simili, specialmente se gestirli nella loro lingua di scelta è prolisso.

Potrebbe anche significare solo che lo sviluppatore che ha scritto il codice non sa come / non si trova a suo agio usando enumerazioni.

    
risposta data 14.06.2013 - 16:33
fonte
1

Penso che la ragione principale in questo caso sia aggiungere la semantica al codice. Riguarda la leggibilità del codice.

Invece di codice simile a:

CashRegister.Add(1 + 10)

Ora sembra:

CashRegister.Add(OneDollarBill + TenDollarBill)

(non dire che questo ha un valore elevato, solo pensando che questo potrebbe essere stato il ragionamento).

    
risposta data 15.06.2013 - 03:25
fonte
0

L'unica cosa che mi viene in mente è la riflessione. Se hai una funzione da qualche parte che ottiene valori usando la riflessione, forse una funzione di serilizzazione, potrebbe avere senso farlo. Sebbene sia possibile utilizzare il reflection su una classe statica, non è possibile ottenere un'istanza di esso per passare.

Nota che mentre lancio questa risposta come risposta, è probabile che non sia / la / risposta.

    
risposta data 14.06.2013 - 17:34
fonte
0

Il corso che hai pubblicato potrebbe essere effettivamente sostituito da un enum. Tuttavia, ci sono alcune situazioni che uno sviluppatore potrebbe voler usare una classe di proprietà statiche, ad esempio se hanno bisogno di eseguire codice in get {} (fare alcuni calcoli basati su altre variabili, ecc.) E / o hanno voluto che il valore fosse essere modificabile tramite il set {}.

    
risposta data 15.06.2013 - 07:22
fonte