Loading...
CharlieScarver avatar CharlieScarver 33 Точки

[C# OOP] Dynamic Properties

Имам въпрос за динамичните/автоматичните пропъртита. В презентацията от първата лекция по ООП имаше пример с клас Rectangle, който има полета width и height и динамично пропърти Area, което има само get и връща произведението на дължината и ширината.
Въпросът ми е как е по-добре в този контекст - Area-та да е в динамично пропърти или в направено от нас поле area и пропърти?
С динамично по-бавно ли е? Сметката всеки път ли се извършва?
Какви са предимствата на динамичните пропъртита, защо бихме ги използвали?

В третата задача от домашното, ако компонентите са лист, цената в динамично пропърти ли би трябвало да е или в наше поле/пропърти?

Тагове:
0
Advanced Level: Front-End
Filkolev avatar Filkolev 4482 Точки
Best Answer

Не съм сигурен, че динамично пропърти е точен термин в случая. Гугъл връща доста по-различни резултати за dynamic property от това, което имаш предвид. Това са просто пропъртита с гетъри, които смятат резултат и го връщат, не е много по-различно от един метод GetArea() например.

Имаш някакъв правоъгълник, на който може да му променяш размерите. Каква е алтернативата на посочения от теб вариант? Да има поле и всеки път при промяна на някоя размерност да смяташ наново лицето. Това не е особено ефикасно по няколко причини - 1) не е ясно дали и кога ще ти потябва да достъпиш лицето, а ти го смяташ многократно; 2) изпълняваш логика по промяна на две стойности в един сетър (примерно в сетъра на ширината, обновяваш ширината и лицето); 3) по-вероятно е да възникнат грешки, особено ако имаш повече пропъртита; може в някое да пропуснеш, че трябва да се обнови и още едно поле.

Когато дадена стойност зависи от други и не може да бъде директно променяна, най-логично е да имаш пропърти само с гетър. Това е правилният подход при задачата с компютрите и компонентите. Освен че си спестяваш ъпдейтването на променлива при всяко добавяне или премахване на компонент, възможно е да се получат и друг род грешки. Например възможно е да има други фактори, които влияят на крайната цена; в този случай трябва така или иначе да разписваш някаква допълнителна логика в гетъра на цената. Излиза, че за тази цена трябва да следиш всеки ред от кода, защото навсякъде потенциално може да я променяш (и сбъркаш). Много по-лесно би било ако цялата логика по изчисляването е там, където очакваш да бъде - в гетъра й.

2
CharlieScarver avatar CharlieScarver 33 Точки

Благодаря за хубавия отговор : )

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