Sono stato infastidito da questa riga di codice che ho scritto e sono stato un po 'confuso in quello che dovrebbe essere scritto.
class SomeClass
{
IBeneficiary _latestBeneficiary => new Beneficiary(Iban, Name);
}
Nel contesto, il campo rappresenta l'ultima versione di un oggetto beneficiario che sta per essere creato, e voglio che questa variabile rappresenti la sua ultima versione possibile considerando qualunque cosa si trovi all'interno di quelle proprietà pubbliche.
Ecco le mie ipotesi e i miei pensieri, sto pensando che ci sia qualcosa di sbagliato lì altrimenti non avrei un problema.
Quindi, chiaramente, questo è un campo. È un campo perché è una variabile privata che tengo nella mia classe, e per riconoscerla, aggiungo un trattino basso come prefisso.
Questo campo restituisce sempre l'ultimo IBeneficiary
possibile considerando Iban e Nome (irrilevante qui). Queste proprietà sono pubbliche e classiche MyProperty SomeProperty { get; set; }
definite nella classe.
Ho definito un campo con un getter di proprietà, il =>
. Ciò è fonte di confusione perché non è il comportamento previsto di un campo restituire sempre qualcosa di nuovo. O è?
Credo che questo dovrebbe essere una funzione, qualcosa come
IBeneficiary CreateLatestBeneficiary (MyProperty param1, MyOtherProperty param2)
{
return new Beneficiary(param1, param2);
}
O anche nominarlo GetLatestBeneficiary
, ma in entrambi i casi questo sembra un vero getter, quindi preferirei avere una proprietà con un solo getter, che fa esattamente questo, come il seguente. Giusto?
IBeneficiary LatestBeneficiary
{
get
{
return new Beneficiary(Iban, Name);
}
}
Ma una proprietà privata è praticamente un campo. Non è vero?
E con questo in mente torniamo al punto di partenza, usando un campo.
Mi sento come da qualche parte lì dentro, una delle mie affermazioni è sbagliata.
Le proprietà private sono a posto? O è una proprietà per definizione qualcosa di pubblico, con almeno un getter? O va bene che un campo non sia una semplice vecchia variabile?
In definitiva, come scriveresti questa riga di codice da solo?