|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Andemki, Как раз де факто, безопасность {get; set;} не гарантирует, так как к полю предоставлен полный доступ из вне через свойства (я конечно понимаю, что такую глупость может сморозить только человек ничего не понимающий в CIL, но прошу понять и простить). Безопасность свойства достигается через {get{}set{}} Единственное, что на мой взгляд, полезное практическое применение этого приема - интерфейсы (конечно-конечно , новое издание Рихтера буду читать а не курить). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2013, 23:40 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTE, вот стоит послушать, класс это пользовательский тип, ну и любой тип как правило реализует свою какую то логику ( передача сообщений, расчет надоев молока и т.д.) и как правило обладает своим внутренним состоянием. так вот.. придумали такое разделение, состояние класса это его состояние внутреннее закрытое с полями и т.д., а доступ к управлению этим типом и его полям- это то что торчит наружу, как правило это функции - члены.. и в том числе то о чём вы говорите.., это очень удобно, надо изменить нам логику внутреннего поведения класса не трогая то, что торчит наружу - пожалуйста, надо нам изменить внешний интерфейс поведения не трогая внутреннею логику - нет проблем. так как общение снаружи идет через функции - члены - это все легко достижимо, надо нам запереть от изменения какой то параметр, в терминологии ++ константной функции члена, вообще проблем нет - убрали или закрыли мутатор, ограничить доступ по какому то условию - чего проще, это ж функция.., мало того в будущем вы узнаете что в тело свойств можно программно внедрять какой то код ( например нотификацию изменений)( создание прокси), да и в ручную попробуйте внедрить эту нотификацию в поле - не возможно так просто. А отсюда следует, что тип ваш инвалид и не может поддерживать бандинг.. вот и всё... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 00:09 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTE, Даже через авто-свойства изменения полей в классе будет безопасным. Если разработчик использует авто-свойства в своём классе, это значит что для обеспечения целостности данных нужно только ограничение по типу данных изменяемого поля и ничего другого больше. И делает он это намеренно, как бы давая понять остальным пользователям класса - "ребята, можете писать в это свойство хоть что в пределах инта и ничего плохого не произойдёт". А вот если бы я увидел public переменную в незнакомом мне классе с названием вроде car_max_speed, то фиг его знает что произойдёт если я туда значение 1000000 запишу или -1000 :) А если это было бы авто-свойство, значит разработчик класса допускает любые значения в пределах указанного типа данных :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 00:46 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ребят, я не о теории, а о практике. Я где то отрицал что работа через свойства плоха? Я говорю что фактически конструкция {get; set;} перечеркивает достоинства работы через свойства, так как фактически поле остается полностью открытым наружу, только через буфер. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 12:07 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Andemki, А какая разница дадите Вы любое значение автосвойству или паблик полю? Реакция компилятора будет одинаковой. Автосвойство ни о какой внутренней логике не говорит, оно говорит лишь о том, что разработчик после имени переменной написал {get; set;} ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 12:11 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTEЯ говорю что фактически конструкция {get; set;} перечеркивает достоинства работы через свойства, так как фактически поле остается полностью открытым наружу, только через буфер. пурга какая-то. Не нравится автосвойство - пиши своё с собственной реализацией. ALOTEговорит лишь о том, что разработчик после имени переменной написал {get; set;} это от непонимания. Байндинг (Binding) работает только со свойствами. Об интерфейсах уже писали. комбинация public get;private set - тоже полезна ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 13:55 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Изопропилпурга какая-то. Не нравится автосвойство - пиши своё с собственной реализацией. Дык и пишу. Автосвойства тоже использую, хотя это не уменьшает излишнесть конструкции. это от непонимания. Байндинг (Binding) работает только со свойствами. Об интерфейсах уже писали. комбинация public get;private set - тоже полезна Это скорее от Вашего не понимания того о чем пишу я. Я говорю о принципе инкапсуляции который, де факто, нарушается автосвойствами, мне про байдинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 14:37 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTE, автор Я говорю о принципе инкапсуляции который, де факто,нарушается автосвойствами, о каком принципе Вы говорите, де факто это 90 процентов применения где свойство протаскивается виртуалным через базовый плюс через интерфейс, 2 процента где тип ложится под прокси, 3 процента где тип можно наследовать и переопределять внешний интерфейс, и два где с типом работают через свойства и 1 процент где применяют что бы не нарушать соглашение при проектировании типа. остальное про запас, как ни крути инкапсуляция чистой воды, может зря они придумали этот сахар?............. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 15:21 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTEЯ говорю о принципе инкапсуляции который, де факто, нарушается автосвойствами, мне про байдинг. Нарушить парадигму [ООП] существует сто тыщ способов и без свойств - идиоты везде себе найдут лазейку. А автосвойства как минимум позволяют а) поддерживать контракт класса (реализацию интерфейса); б) регулировать область видимости аксессора/мутатора. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 16:11 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Не, хорошо что я не стал педагогом. Я про Фому, мне стопятый раз про Ерему. Нарушение инкапсуляции одно, автосвойства дают полный доступ к полю, все остальное весьма полезно, но к инкапсуляции отношения не имеет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 17:04 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTEребят, я не о теории, а о практике. Я где то отрицал что работа через свойства плоха? Я говорю что фактически конструкция {get; set;} перечеркивает достоинства работы через свойства, так как фактически поле остается полностью открытым наружу, только через буфер.Зато в перспективе есть возможность добавить в геттер/сеттер логику без изменения контракта класса. Если нет возможности перекомпиляции вызывающего кода - это весьма полезно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 17:16 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Алексей КЗато в перспективе есть возможность добавить в геттер/сеттер логику без изменения контракта класса. Если нет возможности перекомпиляции вызывающего кода - это весьма полезно. Создаем таймер внутри класса и через определенный интервал перечитываем поле, если значение изменилось - то дальше по бизнес логике идём. Так сказать, таймерный геттер/сеттер для поля ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 18:52 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTEавтосвойства дают полный доступ к полю С какого это перепою? Код: c# 1.
С полями это не выйдет. ALOTEНе, хорошо что я не стал педагогом. И в самом деле. Нельзя преподавать с кашей в голове. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 19:09 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTEНе, хорошо что я не стал педагогом. Я про Фому, мне стопятый раз про Ерему. Нарушение инкапсуляции одно, автосвойства дают полный доступ к полю, все остальное весьма полезно, но к инкапсуляции отношения не имеет. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
1. По Вашей логике вот тоже полный доступ к полю. Но где тут нарушение инкапсуляции? 2. Как Вы предложите переписать код, чтобы не нарушать последнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 20:45 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Автор либо балбес, либо жестко троллит нас. 100%. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 22:49 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
skyANA, В описанном примере к доступу к полю разработчик может добавить свою логику, а при автосвойствах - нет, единственное что он может это изменить уровень доступа, но это и паблик поля умеют. Сон Веры Павловны ну да, конечно, каша в голове у того, кто знает что подобное распределение можно и на уровне публичных полей сделать. МСУ кончено я балбес, так и не смог объяснить толпе программистов, что я не критикую автосвойства за четыре страницы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 14:18 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTE, авторно это и паблик поля умеют. покажи как кодом ( пож.), не нарушая внутреннею логику ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 14:25 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Где-то в степи, ОК, признаю неправоту, в таком подходе принцип инкапсуляции сохраняется, убедили. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 14:27 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTEкто знает что подобное распределение можно и на уровне публичных полей сделать. Надо думать, этот "кто знает" сможет и привести соответствующий код? Итак, продемонстрируйте, пожалуйста, код с паблик полем , доступным всем на чтение, и доступным только в иерархии наследования внутри сборки на запись. Ждем. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 16:29 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Опять о каше в голове, постом выше я признал свою неправоту. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 17:06 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTEпостом выше я признал свою неправоту. постом выше малоосмысленный текст "в таком подходе принцип инкапсуляции сохраняется" ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 19:03 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ИзопропилALOTEпостом выше я признал свою неправоту. постом выше малоосмысленный текст "в таком подходе принцип инкапсуляции сохраняется" И что? Мне тут, как перед прокурором душу начать изливать на C# в трех экземплярах? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 19:16 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
МСУАвтор либо балбес, либо жестко троллит нас. 100%. два в одном ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 21:35 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Верно, переход на личности, лучший способ самоутвердится, когда не удалось продемонстрировать профессионализм. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 22:31 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Информация к размышлению... http://msdn.microsoft.com/en-us/library/bb397909.aspx Типа, семь нововведений в C# 3.0, сделанных для поддержки LINQ. Если с первыми шестью всё понятно, что без них LINQ не поедет, то с автосвойствами не совсем ясно, зачем они нужны ЛИНКу ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 10:41 |
|
|
start [/forum/topic.php?fid=20&msg=38484327&tid=1403580]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
21ms |
get forum data: |
3ms |
get page messages: |
181ms |
get tp. blocked users: |
6ms |
others: | 332ms |
total: | 631ms |
0 / 0 |