Impone il metodo di istanza all'utilizzo di soli membri pubblici

1

Che cosa pensi del codice in questo modo:

public class ThisClass
{
    // this method uses only public members
    public void DoSomething ()
    {
        AccessToPublicMembersOfThisClass.DoSomething(this);
    }
}

// EDIT: this class is not nested!
internal class AccessToPublicMembersOfThisClass
{
    internal void static DoSomething (ThisClass x)
    {
       // we are sure were using only public members because
       // private members are unaccessible from here

        x.Action();
    }
}

È buono o no? Potrei fare alcuni metodi statici, ma non voglio passare alcun argomento ai metodi.

    
posta zgnilec 29.12.2015 - 14:06
fonte

1 risposta

5

Is it good or not?

Non è decisamente buono.

Se non vuoi che qualche funzione acceda ai metodi privati, allora è un segno schiacciante che non dovrebbe far parte della classe.

Peggio ancora, non è chiaro che tu stia cercando di farla rispettare, il che significa che il prossimo programmatore che arriva probabilmente eliminerà questo e lavorerà direttamente con le variabili private. Se vuoi una funzione kinda-kind sulla classe, ma devi vivere altrove, usa i metodi di estensione - ecco perché sono lì.

    
risposta data 29.12.2015 - 16:00
fonte

Leggi altre domande sui tag