Комментарии 17
Я бы посоветовал убрать из кода private set;, это позволит избежать случайной ошибки сделать класс изменяемым.
0
Тогда не получиться инициализировать эти свойства из конструктора.
0
Вы правы. Пост писался еще до 6го шарпа
0
Свойства
P.S. Почему статья не оформлена как перевод?
readonly
были еще до C# 6.P.S. Почему статья не оформлена как перевод?
+1
С ридонли полями примерно так же как и с private set пропертями в плане читаемости. Т.е. для того чтобы понять является ли класс изменяемым нам все равно нужно смотреть внутрь этого класса, по сигнатуре это непонятно. Тут бы помогло ключевое слово immutable.
>P.S. Почему статья не оформлена как перевод?
Я думаю свои статьи не очень правильно оформлять переводом, хотя тут не уверен насчет правил хабра.
>P.S. Почему статья не оформлена как перевод?
Я думаю свои статьи не очень правильно оформлять переводом, хотя тут не уверен насчет правил хабра.
0
Прошу прощения, не обратил внимания, что изначальная статья тоже ваша. Тогда помечать как перевод не нужно.
0
НЛО прилетело и опубликовало эту надпись здесь
Тут я с вами (увж автор) не соглашусь, readonly пресекают изменяемость на корню а вот private set просто не позволяют изменить содержимое снаружи класса. В плане читаемости, когда видишь такое дело тут же ждешь подвоха, а нет ли тут moving parts которые провоцируются внутренним поведением класса.
0
В первом варианте выполнение Search(queryObject); не зависит от if, во втором зависит :)
+1
НЛО прилетело и опубликовало эту надпись здесь
Ещё ограничений:
* сериализация (например, стандартный XmlSerializer требует публичных read-write свойств и конструкторы без параметров)
* ORM (например, EntityFramework плохо дружит с read-only коллекциями)
* сериализация (например, стандартный XmlSerializer требует публичных read-write свойств и конструкторы без параметров)
* ORM (например, EntityFramework плохо дружит с read-only коллекциями)
0
ORM в принципе плохо дружит с неизменяемостью. Просто потому что там все построено на отслеживании изменений в сущностях.
0
По поводу ORM — обычная практика в таких случаях создавать интернал коллекцию для ORM и внешнюю read-only для клиентов класса
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Functional C#: Immutability