|
Давно не кодил и такое увидел
|
|||
---|---|---|---|
#18+
Всем доброго дня. Давно не работал разработчиком точнее года так 4. Подвернулся не большой проект WIn Forms + C# + ADO.NET и увидел я такую интересную штуку что Ienumerable<> пропертю заполняют прям из самой проперти. Это нормально по всем канонам современной разработки? Извиняюсь заранее если вопрос тупой Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 14:17 |
|
Давно не кодил и такое увидел
|
|||
---|---|---|---|
#18+
lans Код: c# 1.
Свойство не должно работать долго и обращаться к инфраструктуре. Выносить в метод, к тому же асинхронный. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 14:19 |
|
Давно не кодил и такое увидел
|
|||
---|---|---|---|
#18+
lans пропертю заполняют прям из самой проперти В современном шарпе записывается короче: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 14:22 |
|
Давно не кодил и такое увидел
|
|||
---|---|---|---|
#18+
Shocker.Pro lans Код: c# 1.
Свойство не должно работать долго и обращаться к инфраструктуре. Выносить в метод, к тому же асинхронный. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 14:29 |
|
Давно не кодил и такое увидел
|
|||
---|---|---|---|
#18+
Shocker.Pro, У нас тоже так на некоторых проектах. Я предложил такие проперти сразу заполнять когда и объект заполняется сам но не всегда пропертя эта может использоваться и нет смысла тянуть заранее данные. А как все же верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 14:47 |
|
Давно не кодил и такое увидел
|
|||
---|---|---|---|
#18+
IPmen Shocker.Pro, У нас тоже так на некоторых проектах. Я предложил такие проперти сразу заполнять когда и объект заполняется сам но не всегда пропертя эта может использоваться и нет смысла тянуть заранее данные. А как все же верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 15:27 |
|
Давно не кодил и такое увидел
|
|||
---|---|---|---|
#18+
Потребитель класса предполагает, что при обращении к проперти он получает какой-то фрагмент состояния этого класса. А не запускает, длительные блокирующие операции, которые могут и поток подвесить и исключение вернуть. И отладчик VS предполагает то же самое. И потом при отладке этого п...ца ты хватаешься за голову, когда у тебя студия хочет показать значения свойств и запускает сотню обращений к недоступной в контексте отладки базы. (смайлик *wall*) ЗЫ: К конструкторам это тоже относится. А то есть любители в конструктор обращение в БД запихать! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 15:39 |
|
Давно не кодил и такое увидел
|
|||
---|---|---|---|
#18+
Это не нормально. Но, если это так везде в проекте, - страдать тебе придется PS. Скажи что они все делают неправильно, что надо все переписать с нуля, перепиши 15%, убей окончательно проект и увольнялся :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 18:46 |
|
Давно не кодил и такое увидел
|
|||
---|---|---|---|
#18+
не нормально, хотя бы потому, что непонятно с одного взгляда, как будет работать * то ли это аналог рид онли коллекции * то ли предподготовленный запрос * то ли внутри GetDocsByID есть ToList/ToArray (тогда вообще жопа) а вторая причина - куча сайд эффектов и непоняток: * что если для каждого экземпляра корневого объекта из 1000 будет вызван Docs * что если внутри GetDocsByID миллион записей * что если DBManager или MGDocs null IPmen У нас тоже так на некоторых проектах. Я предложил такие проперти сразу заполнять когда и объект заполняется сам но не всегда пропертя эта может использоваться и нет смысла тянуть заранее данные. А как все же верно? * сначала отдельно идешь в базу, достаешь все что надо * а потом из этого строишь и заполняешь объект * а вот потом можешь обращаться к нему и к его пропертям все это три разных места обозначенным способом можно делать вычисляемые свойства, но которые используют уже заполненные значения из других свойств этого же объекта, ну например FullName, который компонуется из FirstName и LastName ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 19:08 |
|
Давно не кодил и такое увидел
|
|||
---|---|---|---|
#18+
lans Всем доброго дня. Давно не работал разработчиком точнее года так 4. Подвернулся не большой проект WIn Forms + C# + ADO.NET и увидел я такую интересную штуку что Ienumerable<> пропертю заполняют прям из самой проперти. Это нормально по всем канонам современной разработки? Извиняюсь заранее если вопрос тупой Что тут современного-то? Простая реализация шаблона ActiveRecord. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 21:37 |
|
Давно не кодил и такое увидел
|
|||
---|---|---|---|
#18+
Ну или возьмём какой-нибудь NHibernate c lazy property в маппинге в виде коллекции... Развели тут консилиум ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 21:41 |
|
Давно не кодил и такое увидел
|
|||
---|---|---|---|
#18+
а что, если я получаю значение поля, но последовательность перебирать не буду, а потом получу "кэшированную версию" перечисления и начну её итерировать. когда произойдет материализация объектов? можно легко выстрелить себе в ногу, как мне кажется. в целом вызов методов в свойстве нормальное явление, если это свойство отражает внутренние состояние объекта, вычисляет что то небольшое или выдает значение. От внешних ссылок или каких то сервисов это не должно зависеть. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2021, 12:07 |
|
|
start [/forum/topic.php?fid=17&tid=1349040]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
400ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 234ms |
total: | 740ms |
0 / 0 |