powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / get; set; надеюсь не скатимся в холивор, а то реально непонятно.
25 сообщений из 196, страница 4 из 8
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484175
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andemki,

Как раз де факто, безопасность {get; set;} не гарантирует, так как к полю предоставлен полный доступ из вне через свойства (я конечно понимаю, что такую глупость может сморозить только человек ничего не понимающий в CIL, но прошу понять и простить).
Безопасность свойства достигается через {get{}set{}}
Единственное, что на мой взгляд, полезное практическое применение этого приема - интерфейсы (конечно-конечно , новое издание Рихтера буду читать а не курить).
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484194
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTE,
вот стоит послушать, класс это пользовательский тип, ну и любой тип как правило реализует свою какую то логику
( передача сообщений, расчет надоев молока и т.д.) и как правило обладает своим внутренним состоянием.
так вот.. придумали такое разделение, состояние класса это его состояние внутреннее закрытое с полями и т.д., а доступ к управлению этим типом и его полям- это то что торчит наружу, как правило это функции - члены.. и в том числе то о чём вы говорите.., это очень удобно, надо изменить нам логику внутреннего поведения класса не трогая то, что торчит наружу - пожалуйста, надо нам изменить внешний интерфейс поведения не трогая внутреннею логику - нет проблем.
так как общение снаружи идет через функции - члены - это все легко достижимо, надо нам запереть от изменения какой то параметр, в терминологии ++ константной функции члена, вообще проблем нет - убрали или закрыли мутатор, ограничить доступ по какому то условию - чего проще, это ж функция.., мало того в будущем вы узнаете что в тело свойств можно программно внедрять какой то код ( например нотификацию изменений)( создание прокси), да и в ручную попробуйте внедрить эту нотификацию в поле - не возможно так просто.
А отсюда следует, что тип ваш инвалид и не может поддерживать бандинг.. вот и всё...
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484209
Andemki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ALOTE,

Даже через авто-свойства изменения полей в классе будет безопасным. Если разработчик использует авто-свойства в своём классе, это значит что для обеспечения целостности данных нужно только ограничение по типу данных изменяемого поля и ничего другого больше. И делает он это намеренно, как бы давая понять остальным пользователям класса - "ребята, можете писать в это свойство хоть что в пределах инта и ничего плохого не произойдёт".
А вот если бы я увидел public переменную в незнакомом мне классе с названием вроде car_max_speed, то фиг его знает что произойдёт если я туда значение 1000000 запишу или -1000 :)
А если это было бы авто-свойство, значит разработчик класса допускает любые значения в пределах указанного типа данных :)
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484323
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребят, я не о теории, а о практике. Я где то отрицал что работа через свойства плоха? Я говорю что фактически конструкция {get; set;} перечеркивает достоинства работы через свойства, так как фактически поле остается полностью открытым наружу, только через буфер.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484327
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andemki,
А какая разница дадите Вы любое значение автосвойству или паблик полю? Реакция компилятора будет одинаковой. Автосвойство ни о какой внутренней логике не говорит, оно говорит лишь о том, что разработчик после имени переменной написал {get; set;}
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484398
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTEЯ говорю что фактически конструкция {get; set;} перечеркивает достоинства работы через свойства, так как фактически поле остается полностью открытым наружу, только через буфер.
пурга какая-то. Не нравится автосвойство - пиши своё с собственной реализацией.

ALOTEговорит лишь о том, что разработчик после имени переменной написал {get; set;}
это от непонимания. Байндинг (Binding) работает только со свойствами. Об интерфейсах уже писали.
комбинация public get;private set - тоже полезна
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484417
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилпурга какая-то. Не нравится автосвойство - пиши своё с собственной реализацией.
Дык и пишу. Автосвойства тоже использую, хотя это не уменьшает излишнесть конструкции.

это от непонимания. Байндинг (Binding) работает только со свойствами. Об интерфейсах уже писали.
комбинация public get;private set - тоже полезна
Это скорее от Вашего не понимания того о чем пишу я. Я говорю о принципе инкапсуляции который, де факто, нарушается автосвойствами, мне про байдинг.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484439
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTE,
автор Я говорю о принципе инкапсуляции который, де факто,нарушается автосвойствами, о каком принципе Вы говорите, де факто это 90 процентов применения где свойство протаскивается виртуалным через базовый плюс через интерфейс, 2 процента где тип ложится под прокси, 3 процента где тип можно наследовать и переопределять внешний интерфейс, и два где с типом работают через свойства и 1 процент где применяют что бы не нарушать соглашение при проектировании типа. остальное про запас,
как ни крути инкапсуляция чистой воды, может зря они придумали этот сахар?.............
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484467
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTEЯ говорю о принципе инкапсуляции который, де факто, нарушается автосвойствами, мне про байдинг.
Нарушить парадигму [ООП] существует сто тыщ способов и без свойств - идиоты везде себе найдут лазейку. А автосвойства как минимум позволяют а) поддерживать контракт класса (реализацию интерфейса); б) регулировать область видимости аксессора/мутатора.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484494
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, хорошо что я не стал педагогом. Я про Фому, мне стопятый раз про Ерему. Нарушение инкапсуляции одно, автосвойства дают полный доступ к полю, все остальное весьма полезно, но к инкапсуляции отношения не имеет.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484502
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTEребят, я не о теории, а о практике. Я где то отрицал что работа через свойства плоха? Я говорю что фактически конструкция {get; set;} перечеркивает достоинства работы через свойства, так как фактически поле остается полностью открытым наружу, только через буфер.Зато в перспективе есть возможность добавить в геттер/сеттер логику без изменения контракта класса. Если нет возможности перекомпиляции вызывающего кода - это весьма полезно.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484575
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЗато в перспективе есть возможность добавить в геттер/сеттер логику без изменения контракта класса. Если нет возможности перекомпиляции вызывающего кода - это весьма полезно.
Создаем таймер внутри класса и через определенный интервал перечитываем поле, если значение изменилось - то дальше по бизнес логике идём. Так сказать, таймерный геттер/сеттер для поля
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484584
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTEавтосвойства дают полный доступ к полю
С какого это перепою?
Код: c#
1.
public int Foo { get; internal protected set; }


С полями это не выйдет.
ALOTEНе, хорошо что я не стал педагогом.
И в самом деле. Нельзя преподавать с кашей в голове.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484640
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTEНе, хорошо что я не стал педагогом. Я про Фому, мне стопятый раз про Ерему. Нарушение инкапсуляции одно, автосвойства дают полный доступ к полю, все остальное весьма полезно, но к инкапсуляции отношения не имеет.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
private string name;

public string Name
{
    get
    {
        return this.name;
    }
    set
    {
        this.name = value;
        this.MarkAsChanged();
    }
}


1. По Вашей логике вот тоже полный доступ к полю. Но где тут нарушение инкапсуляции?
2. Как Вы предложите переписать код, чтобы не нарушать последнее?
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484697
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор либо балбес, либо жестко троллит нас. 100%.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484968
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
В описанном примере к доступу к полю разработчик может добавить свою логику, а при автосвойствах - нет, единственное что он может это изменить уровень доступа, но это и паблик поля умеют.
Сон Веры Павловны ну да, конечно, каша в голове у того, кто знает что подобное распределение можно и на уровне публичных полей сделать.
МСУ кончено я балбес, так и не смог объяснить толпе программистов, что я не критикую автосвойства за четыре страницы.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484971
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTE,
авторно это и паблик поля умеют. покажи как кодом ( пож.), не нарушая внутреннею логику
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38484972
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,
ОК, признаю неправоту, в таком подходе принцип инкапсуляции сохраняется, убедили.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38485065
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTEкто знает что подобное распределение можно и на уровне публичных полей сделать.
Надо думать, этот "кто знает" сможет и привести соответствующий код? Итак, продемонстрируйте, пожалуйста, код с паблик полем , доступным всем на чтение, и доступным только в иерархии наследования внутри сборки на запись. Ждем.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38485095
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
Опять о каше в голове, постом выше я признал свою неправоту.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38485172
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTEпостом выше я признал свою неправоту.
постом выше малоосмысленный текст "в таком подходе принцип инкапсуляции сохраняется"
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38485184
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилALOTEпостом выше я признал свою неправоту.
постом выше малоосмысленный текст "в таком подходе принцип инкапсуляции сохраняется"
И что? Мне тут, как перед прокурором душу начать изливать на C# в трех экземплярах?
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38485271
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАвтор либо балбес, либо жестко троллит нас. 100%.
два в одном
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38485308
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верно, переход на личности, лучший способ самоутвердится, когда не удалось продемонстрировать профессионализм.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38485613
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Информация к размышлению...

http://msdn.microsoft.com/en-us/library/bb397909.aspx

Типа, семь нововведений в C# 3.0, сделанных для поддержки LINQ.
Если с первыми шестью всё понятно, что без них LINQ не поедет, то с автосвойствами не совсем ясно, зачем они нужны ЛИНКу ?
...
Рейтинг: 0 / 0
25 сообщений из 196, страница 4 из 8
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / get; set; надеюсь не скатимся в холивор, а то реально непонятно.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]