Професионална програма
Loading...
+ Нов въпрос
CharlieScarver avatar CharlieScarver 33 Точки

[Homework] Ref/Out параметри или връщане на масив от стойности

От гледна точка на качествения код, кое е по-зле, когато имаме код, който ще ни даде някакви стойности (в случая 2):
да използваме ref/out параметри и метода да ни ги промени директно или
метода да ни върне масив от стойностите?

Благодаря, предварително

0
C# OOP Advanced 01/02/2016 23:15:17
RoYaL avatar RoYaL Trainer 6845 Точки

Имаш ли добра причина да искаш да върнеш повече от една стойност?

Масив от стойности обикновено не е добра идея, заради факта, че човек ще трява да знаеш спецификата на метода - нулевата стойност е еди какво си, а първата - нещо друго. Това обикновено се оправя с добра документация. Има серия от такива методи навсякъде. Например Java: BigDecimal.divideAndRemainer().

Аз лично бих предпочел да се връща някакъв обект с две пропъртита. Така ще има и аутокъмплийт за ползвателя и няма да се налага човек да помни [0] ли иска да вземе или [1] :)

P.S.: Аз лично съм против ref/out в 99% от случаите :)

3
AleksandurSeferinkin avatar AleksandurSeferinkin 335 Точки

Зависи. Масив от стойности се връща, когато идеята е такава, но не и за да върнеш фиксиран брой елементи при всеки резултат само защото не се сещаш за друг начин. В такива случаи се прави структура - те са точно за тов. Ref/out са полезни за случаи, в които метода връща boolean резултат и променя аргумент, който не е референтен тип. Пример е int.TryParse метода. Направен е с out параметър и връща bool, защото иначе няма как да разбереш дали процедурата е минала успешно. Също така такъв метод може да го ползваш директно в if клауза.

В твоя случай е най-добре да ползваш struct.

1