Per i metodi di esempio, restituire sempre sé o questo, invece di usare un tipo di reso vuoto, essere uno stile di codifica pulito? [chiuso]

3

Ho appena trovato questo articolo , e in particolare, questa risposta . In sostanza si tratta di restituire self dai metodi di istanza per consentire il concatenamento dei metodi. Detto questo, uno dei primi pensieri che mi è venuto in mente è stato, Perché non prendere sempre i metodi di istanza con void tipi di ritorno e renderli restituiti this o self invece? Il prossimo pensiero , che mi è venuto in mente immediatamente, era, C'è probabilmente una ragione per cui questo non è più comune. Quindi quale potrebbe essere il danno in esso?

Sembra che onestamente non ci sarebbe nessuno. Il motivo è che nulla sulla semplice esistenza di un valore di ritorno implica o sembra addirittura implicare la necessità di usare quel valore di ritorno. Se il metodo è un getter specializzato o un lettore di file o qualcosa del genere, questa è una cosa, ma se le persone non stanno cercando di usare il valore di ritorno, naturalmente non presteranno alcuna attenzione. Inoltre, non dovrebbe essere troppo confuso, perché return this; è piuttosto banale; al massimo, qualcuno probabilmente penserebbe che sia irrilevante. Sembra certamente che non danneggerebbe nulla, ed è generalmente meglio avere troppo o troppo poco.

    
posta Panzercrisis 22.04.2014 - 17:40
fonte

1 risposta

4

In generale, i metodi che restituiscono void dovrebbero essere rari. Perché? Significa che per il metodo per fare qualcosa di significativo, ha bisogno di mutare la classe o avere qualche altro effetto collaterale. Le mutazioni e gli effetti collaterali generalmente causano problemi di concorrenza, test e ragionamento sulla correttezza del tuo programma.

Peggio ancora, la tendenza nella moderna programmazione orientata agli oggetti è quella di favorire sempre più gli oggetti immutabili. Che cosa fa la firma della funzione per cercare i metodi che eseguono qualche operazione e quindi restituiscono una nuova forma dell'oggetto (si pensi a DateTime.AddHours )? Esatto, lo stesso di una funzione di muting self return.

E in generale, ignorare i valori di ritorno è un odore di codice, spesso oscurando la gestione degli errori o altri errori.

In breve: può portare a codice pulito se questo è l'idioma nella tua lingua / ambiente, ma è una cattiva idea in generale, andando contro le tendenze delle migliori pratiche.

    
risposta data 22.04.2014 - 18:01
fonte

Leggi altre domande sui tag