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 6849 Точки

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

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

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

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

3
AleksandurSeferinkin avatar AleksandurSeferinkin 333 Точки

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

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

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.