|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
Ну, вот я только могу представить, если свойства содержат логику валидации полей, как в MVVM через IDataErrorInfo, то, пожалуй, стоит даже внутри класса к полям через свойства обращаться, если могут быть какие-то изменения этих полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2013, 15:53 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
pationАлексей Кпропущено... А если логика не нужна? на проперти можно поставить точку останова, на филде нетЕсли захочется, поле всегда можно преобразовать в свойство. Главное, чтобы была возможность перекомпилировать вызывающий код. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 10:49 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
user7320Denis.если есть проперти то доступ к полю даже изнутри класса только через него Это утверждение или рекомендация? Если первое, то это неправда. А если второе, то почему? потому как когда захотите добавить логику или поставить брейкпоинт будете все юзаджи поля в классе искать ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 13:10 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
авторесли есть проперти то доступ к полю даже изнутри класса только через него С моей точки зрения, не более чем пожелание. Были у меня случаи, когда приходилось убирать обращение к свойству и менять на обращение к полю. Просто необходимо помнить, что обращение к свойству это вызов метода. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2013, 18:18 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
Denis.user7320пропущено... Это утверждение или рекомендация? Если первое, то это неправда. А если второе, то почему? потому как когда захотите добавить логику или поставить брейкпоинт будете все юзаджи поля в классе искатьЧто нужно искать? Было так: Код: c# 1.
Стало так: Код: c# 1.
Или так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Достаточно перекомпилировать вызывающий код. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 05:48 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
Вобщем, как и почти всегда, вы не даёте конкретного ответа (вздыхает). Как я понял, для каждого случая лучше что-то своё. Нужно каждый раз анализировать ситуацию. Общего правила нет... Вот так и утекает время и внимание на мелочи (вздыхает). ...(вздыхает ещё раз) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 08:48 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
user7320Вобщем, как и почти всегда, вы не даёте конкретного ответа (вздыхает). Как я понял, для каждого случая лучше что-то своё. Нужно каждый раз анализировать ситуацию. Общего правила нет...КО. Многое зависит от Вашей предметной области. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 09:05 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
А вообще есть S.O.L.I.D., есть ООА и ООП. Познакомьтесь с ними, а потом будете думать, что конкретно применить в конкретной ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 09:09 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
skyANAА вообще есть S.O.L.I.D., есть ООА и ООП. Познакомьтесь с ними, а потом будете думать, что конкретно применить в конкретной ситуации.+ SRP и DRY. Но самое интересное начинается когда эти принципы противоречат друг с другу. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 09:45 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
Алексей К, конструкция "public int MyValue;" - для меня вообще загадочна. Допустим есть проперти с паблик сеттером, допустим вы извне меняете естественно через сеттер, а изнутри класса меняете через поле. У вас в проперти инвалид значение и вы хотите поставить брейкпоинт чтобы поглядеть колстек. Что будете делать? И почему сразу изнутри класса не юзать гетеры сетеры?(про вырожденные случаи не надо). Вообще вопрос настолько очевидный, что его даже как-то странно обсуждать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 13:43 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
user7320Вобщем, как и почти всегда, вы не даёте конкретного ответа (вздыхает). Как я понял, для каждого случая лучше что-то своё. Нужно каждый раз анализировать ситуацию. Общего правила нет... Вот так и утекает время и внимание на мелочи (вздыхает). ...(вздыхает ещё раз) я дал правильный ответ :) делай так чтобы торчали интерфейсы, желательно наиболее общего типа, достаточные для того чтобы предоставить необходимый контракт с одной стороны и скрыть реализацию внутри класса с другой. Внутри класса конструкции вида IList<string> list = new List<string>() теоретически смысл имеют, но практика показывает что смысл этот стремится к 0. В большинстве случаев контракт коллекции торчащий наружу должен быть ienumerable<t> ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 13:52 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
Denis.Алексей К, конструкция "public int MyValue;" - для меня вообще загадочна. Допустим есть проперти с паблик сеттером, допустим вы извне меняете естественно через сеттер, а изнутри класса меняете через поле.Где было предложено менять снаружи через сеттер, а внутри через поле? Я такого не помню. Denis.У вас в проперти инвалид значение и вы хотите поставить брейкпоинт чтобы поглядеть колстек. Что будете делать? И почему сразу изнутри класса не юзать гетеры сетеры?(про вырожденные случаи не надо).Что мешает оперативно преобразовать поле в свойство? Вызывающему коду вроде Код: c# 1.
всё равно, поле это или свойство. Изменять его не придётся. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 14:33 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
Denis.делай так чтобы торчали интерфейсыТорчащий наружу IEnumerable может выйти боком в условиях многопоточности. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 14:35 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
Алексей КТорчащий наружу IEnumerable может выйти боком в условиях многопоточности. В условиях многопоточности выйти боком могут гораздо более простые вещи. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 14:37 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
Алексей К, так о том речь и шла по моему пониманию - юзать ли уже существующие проперти внутри класса через методы или через поля? Я утверждаю что по-умолчанию через методы(геторы сеторы) Про многопоточность - это совсем отдельная песня. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 14:49 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
Алексей КDenis.делай так чтобы торчали интерфейсыТорчащий наружу IEnumerable может выйти боком в условиях многопоточности. Блин, я уже сделал айэнумерейбл! А можете пример привести, когда в условиях многопоточности айэнумерейбл может вылезти боком и почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 14:50 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
user7320Алексей Кпропущено... Торчащий наружу IEnumerable может выйти боком в условиях многопоточности. Блин, я уже сделал айэнумерейбл! А можете пример привести, когда в условиях многопоточности айэнумерейбл может вылезти боком и почему? Не тронь! Оставь как сделал :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 14:52 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
Denis.Алексей К, конструкция "public int MyValue;" - для меня вообще загадочна. Допустим есть проперти с паблик сеттером, допустим вы извне меняете естественно через сеттер, а изнутри класса меняете через поле. У вас в проперти инвалид значение и вы хотите поставить брейкпоинт чтобы поглядеть колстек. Что будете делать? И почему сразу изнутри класса не юзать гетеры сетеры?(про вырожденные случаи не надо). Вообще вопрос настолько очевидный, что его даже как-то странно обсуждать. Ну, выше же говорили про производительность, что это лишний вызов метода, который где-то на порядок медленнее прямого обращения к полю (судя по старым тестам ещё времён фреймворк 1-1.1, может, 2). Поэтому, скажем, обращение к полю через геттер внутри класса лучше всё же заменить на прямое обращение к полю в задачах, где слишком много таких обращений (всякие итерации по сассивам и пр.). Правильно я говорю, да? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 14:59 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
user7320, нет. Почти все неправильно. Забудь об этом и не вспоминай:). Я серьезно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 15:01 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
user7320Алексей Кпропущено... Торчащий наружу IEnumerable может выйти боком в условиях многопоточности. Блин, я уже сделал айэнумерейбл! А можете пример привести, когда в условиях многопоточности айэнумерейбл может вылезти боком и почему? Здесь http://msdn.microsoft.com/en-us/library/system.collections.ienumerable.aspx и здесь http://msdn.microsoft.com/en-us/library/9eekhta0.aspx вообще ничего про потоки не написано (искал по "thre" по странице). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 15:02 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
user7320Алексей Кпропущено... Торчащий наружу IEnumerable может выйти боком в условиях многопоточности. Блин, я уже сделал айэнумерейбл! А можете пример привести, когда в условиях многопоточности айэнумерейбл может вылезти боком и почему?Наружу торчит Enumerable. Вы не знаете что за коллекция за ним скрыта. Делаете по ней foreach. При этом оказывается, что это List, в который добавляет элементы другой поток. Если наружу торчит что-то неизменяемое (массив, ReadOnlyCollection и т. п.) как-то спокойнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 15:13 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
Алексей Кuser7320пропущено... Блин, я уже сделал айэнумерейбл! А можете пример привести, когда в условиях многопоточности айэнумерейбл может вылезти боком и почему?Наружу торчит Enumerable. Вы не знаете что за коллекция за ним скрыта. Делаете по ней foreach. При этом оказывается, что это List, в который добавляет элементы другой поток. Если наружу торчит что-то неизменяемое (массив, ReadOnlyCollection и т. п.) как-то спокойнее. Ну, наверное есть же какие-нибудь механизмы, которые могут извещять всякий поток, работающий с коллекцией, что другой поток в данный момент изменяет её? Или, даже если и есть такие механизмы, то они ничего не дадут? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 15:55 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
user7320Ну, наверное есть же какие-нибудь механизмы, которые могут извещять всякий поток, работающий с коллекцией, что другой поток в данный момент изменяет её? Или, даже если и есть такие механизмы, то они ничего не дадут? С многопоточностью халявы не бывает. Обеспечение потокобезопасности приложения полностью на совести разработчика приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 16:56 |
|
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
|
|||
---|---|---|---|
#18+
Алексей Кuser7320пропущено... Блин, я уже сделал айэнумерейбл! А можете пример привести, когда в условиях многопоточности айэнумерейбл может вылезти боком и почему?Наружу торчит Enumerable. Вы не знаете что за коллекция за ним скрыта. Делаете по ней foreach. При этом оказывается, что это List, в который добавляет элементы другой поток. Если наружу торчит что-то неизменяемое (массив, ReadOnlyCollection и т. п.) как-то спокойнее. Бред сивой кобылы опасного ковбоя ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 21:09 |
|
|
start [/forum/topic.php?fid=20&msg=38191374&tid=1404986]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 163ms |
0 / 0 |