Come dovrei rappresentare lo stato booleano mutabile?

2

Quando ho alcuni oggetti con lo stato booleano che possono essere modificati (come il controllo di una checkbox), ci sono diversi modi in cui posso esporlo.

  1. Proprietà Getter, metodo Setter

    bool IsChecked { get { ... } }
    void SetChecked(bool checked) { ... }
    
  2. Proprietà Getter, Imposta metodo true, Imposta metodo falso

    bool IsChecked { get { ... } }
    void Check() { ... }
    void Uncheck() { ... }
    
  3. Getter, proprietà setter

    bool IsChecked { get { ... } set { ... } }  
    

C'è un buon design o una ragione logica per usare uno di questi modi in particolare? (Mi scuso se questa domanda è troppo basata sull'opinione pubblica / aperta)

    
posta AlphaModder 15.05.2016 - 06:47
fonte

2 risposte

8

Idiomatic C # generalmente privilegia le proprietà sui metodi di accesso per le proprietà semplici, quindi usa solo una proprietà a meno che non ci sia una buona ragione per non farlo. Se c'è una logica complessa nel getter o nel setter, potrebbe essere meglio usare accessors per evitare di infrangere il Principio di Least Surprise.

Per un esempio canonico, le caselle di controllo WPF usano una proprietà - sebbene un bool? includa lo stato "parzialmente controllato".

    
risposta data 15.05.2016 - 08:49
fonte
2

Proprietà Getter / setter sono la strada da percorrere. Sono molto chiari, in termini di codice e non comportano l'aggiunta di un odore strano a un'intera base di codice. Inoltre, strumenti come Entity Framework utilizzano coppie getter / setter per lavorare, quindi una proprietà dovrebbe essere più facilmente individuabile da strumenti, IDE e framework rispetto a qualsiasi soluzione laminata a mano.

In generale, se ti trovi a voler migliorare la progettazione di operazioni molto semplici, come l'impostazione di variabili o il ciclo, resisti! :)

    
risposta data 15.05.2016 - 09:45
fonte

Leggi altre domande sui tag