Size: a a a

2020 January 01

OM

Oleg Morozov in pro.net
Карен
на

public int Foo { get; set; }
а в чем смысл кроме имплементации интерфейса? увеличения коллстека?
источник

К

Карен in pro.net
Oleg Morozov
а в чем смысл кроме имплементации интерфейса? увеличения коллстека?
смысл в том что плохо оставлять поле публичным
просто плохая практика, как и глобальные переменные
источник

OM

Oleg Morozov in pro.net
я и спрашиваю о том, в чем плохо конкретно, если поведение одинаково
источник

К

Карен in pro.net
Oleg Morozov
я и спрашиваю о том, в чем плохо конкретно, если поведение одинаково
источник

OM

Oleg Morozov in pro.net
допустим
и как часто у вас наступает это позже?
источник

OM

Oleg Morozov in pro.net
чисто субъективное ощущение интересно
источник

IC

Iλyα Che in pro.net
Oleg Morozov
я и спрашиваю о том, в чем плохо конкретно, если поведение одинаково
Дело не в частоте, а в ненулевой вероятности и количестве проблем, которые появляются при наступлении этой вероятности.
источник

RN

Roman Nevolin in pro.net
Карен
смысл в том что плохо оставлять поле публичным
просто плохая практика, как и глобальные переменные
Не сказал бы, что это плохая практика - скорее трейдофф. Например, навешивание дополнительной логики на get/set, как по мне - это спорная идея, которая уменьшает понятность кода и увеличивает вероятность случайной ошибки, трудной для отладки
источник

RN

Roman Nevolin in pro.net
И необходимости переопределять get/set у меня не возникало уже несколько лет. И, пожалуй, если бы она сейчас возникла - я бы постарался найти способ обойтись без этого
источник

К

Карен in pro.net
Oleg Morozov
допустим
и как часто у вас наступает это позже?
достаточно часто хочется ограничивать запись, сделать private или protected или может даже internal, со свойством это сделается моментально
источник

RN

Roman Nevolin in pro.net
Карен
достаточно часто хочется ограничивать запись, сделать private или protected или может даже internal, со свойством это сделается моментально
А это точно также реализуется через readonly или навешивание дефолтного get; set в тот момент, когда это понадобилось - вроде бы никаких дополнительных изменений в коде не потребуется
источник

OM

Oleg Morozov in pro.net
Iλyα Che
Дело не в частоте, а в ненулевой вероятности и количестве проблем, которые появляются при наступлении этой вероятности.
это больше выглядит как что-то аналогичное преждевременной оптимизации
когда-то там что-то должно наступить и оно не наступает

потому что просто, если и наступает, то касается сразу переписывания крупного участка
источник

К

Карен in pro.net
Roman Nevolin
А это точно также реализуется через readonly или навешивание дефолтного get; set в тот момент, когда это понадобилось - вроде бы никаких дополнительных изменений в коде не потребуется
если ты пишешь либу, то тебя возненавидят разрабы за изменение поля на свойство
источник

К

Карен in pro.net
ну и readonly это не уровень доступа к переменной, это очень разное, ты не можешь ридонли переменную перезаписать позже
источник

OM

Oleg Morozov in pro.net
Карен
достаточно часто хочется ограничивать запись, сделать private или protected или может даже internal, со свойством это сделается моментально
так ты обычно сразу и ограничиваешь, в этом кейсе понятно
источник

RN

Roman Nevolin in pro.net
Карен
ну и readonly это не уровень доступа к переменной, это очень разное, ты не можешь ридонли переменную перезаписать позже
Тьфу, да, тут ошибся
источник

RN

Roman Nevolin in pro.net
Карен
если ты пишешь либу, то тебя возненавидят разрабы за изменение поля на свойство
Но все еще, если ты пишешь либу, то тебя могут возненавидеть и за то, что ты сделал прежде публичное поле приватным :)
источник

RN

Roman Nevolin in pro.net
Такие штуки в принципе грешноваты с точки зрения дизайна
источник

К

Карен in pro.net
Roman Nevolin
Но все еще, если ты пишешь либу, то тебя могут возненавидеть и за то, что ты сделал прежде публичное поле приватным :)
изменение уровня доступа это очевидное изменение, компилятор покажет что не так.
а изменение поля на свойство никак не отразится, у разраба бомбанет, и это ок если он сразу сообразит что не так было при обновлении либы
источник

OM

Oleg Morozov in pro.net
просто обычно заходишь в код и там тысячелетиями лежат эти гетсет

их либо сразу при проектировании размечают модификаторами доступа, либо они вот так всю свою жизнь и лежат
источник