Usa 'ref' solo per chiarimenti?

7

Ho scritto un metodo FillSomeData(ParameterData param, Result res) , che popola res con alcuni dati (proprio come indicato sull'etichetta).

Result è una classe, non una struct, quindi FillSomeData influenza effettivamente res .

Dopo una revisione del codice, i miei colleghi insistono sul fatto che aggiungo una ref alla firma del metodo (cambiandola in FillSomeData(ParameterData param, ref Result res) ), solo per chiarire che il metodo cambia res .

Credo che questa non sia l'intenzione della parola chiave ref e che ciò sia sbagliato.

Qual è la pratica comune e raccomandata in tali situazioni?

    
posta Yehuda Shapira 04.06.2017 - 13:05
fonte

1 risposta

25

No.

Per chiunque abbia capito che cosa significhi la parola chiave ref , ciò offusca ciò che il metodo realmente fa. L'alternativa migliore è scegliere un nome più descrittivo per un metodo come

 FillSomeDataIntoResult(ParameterData param, Result res)

Puoi anche provare a evitare l'uso di ref , cambiando il tuo codice in un modo che consentirà di scrivere

 Result res=CreateResult(param)

o

 res.SomeData=CreateSomeData(param)

o

 res.InitSomeData(CreateSomeData(param)) 

Ovviamente, per rendere quest'ultima una possibile soluzione, potrebbe essere necessario ristrutturare il codice di riempimento e / o la classe Result , ea volte ciò non sembra valere la pena.

    
risposta data 04.06.2017 - 14:31
fonte

Leggi altre domande sui tag