powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
25 сообщений из 61, страница 2 из 3
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38188190
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, вот я только могу представить, если свойства содержат логику валидации полей, как в MVVM через IDataErrorInfo, то, пожалуй, стоит даже внутри класса к полям через свойства обращаться, если могут быть какие-то изменения этих полей.
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38189155
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationАлексей Кпропущено...
А если логика не нужна?

на проперти можно поставить точку останова, на филде нетЕсли захочется, поле всегда можно преобразовать в свойство. Главное, чтобы была возможность перекомпилировать вызывающий код.
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38189539
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Denis.если есть проперти то доступ к полю даже изнутри класса только через него
Это утверждение или рекомендация? Если первое, то это неправда. А если второе, то почему?
потому как когда захотите добавить логику или поставить брейкпоинт будете все юзаджи поля в классе искать
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38190356
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторесли есть проперти то доступ к полю даже изнутри класса только через него

С моей точки зрения, не более чем пожелание.
Были у меня случаи, когда приходилось убирать обращение к свойству и менять на обращение к полю.
Просто необходимо помнить, что обращение к свойству это вызов метода.
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38190790
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.user7320пропущено...

Это утверждение или рекомендация? Если первое, то это неправда. А если второе, то почему?
потому как когда захотите добавить логику или поставить брейкпоинт будете все юзаджи поля в классе искатьЧто нужно искать?

Было так:
Код: c#
1.
public int MyValue;


Стало так:
Код: c#
1.
public int MyValue { get; set; }


Или так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public int MyValue 
{ 
    // добавляем логику если надо
    get { _myValue = value; }
    set { return _myValue; }
}

int _myValue;


Достаточно перекомпилировать вызывающий код.
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38190852
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем, как и почти всегда, вы не даёте конкретного ответа (вздыхает). Как я понял, для каждого случая лучше что-то своё. Нужно каждый раз анализировать ситуацию. Общего правила нет... Вот так и утекает время и внимание на мелочи (вздыхает).

...(вздыхает ещё раз)
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38190868
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Вобщем, как и почти всегда, вы не даёте конкретного ответа (вздыхает). Как я понял, для каждого случая лучше что-то своё. Нужно каждый раз анализировать ситуацию. Общего правила нет...КО.

Многое зависит от Вашей предметной области.
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38190872
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще есть S.O.L.I.D., есть ООА и ООП. Познакомьтесь с ними, а потом будете думать, что конкретно применить в конкретной ситуации.
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38190931
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА вообще есть S.O.L.I.D., есть ООА и ООП. Познакомьтесь с ними, а потом будете думать, что конкретно применить в конкретной ситуации.+ SRP и DRY.

Но самое интересное начинается когда эти принципы противоречат друг с другу. :-)
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191342
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
конструкция "public int MyValue;" - для меня вообще загадочна.
Допустим есть проперти с паблик сеттером, допустим вы извне меняете естественно через сеттер, а изнутри класса меняете через поле. У вас в проперти инвалид значение и вы хотите поставить брейкпоинт чтобы поглядеть колстек. Что будете делать? И почему сразу изнутри класса не юзать гетеры сетеры?(про вырожденные случаи не надо). Вообще вопрос настолько очевидный, что его даже как-то странно обсуждать.
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191374
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Вобщем, как и почти всегда, вы не даёте конкретного ответа (вздыхает). Как я понял, для каждого случая лучше что-то своё. Нужно каждый раз анализировать ситуацию. Общего правила нет... Вот так и утекает время и внимание на мелочи (вздыхает).

...(вздыхает ещё раз)
я дал правильный ответ :)
делай так чтобы торчали интерфейсы, желательно наиболее общего типа, достаточные для того чтобы предоставить необходимый контракт с одной стороны и скрыть реализацию внутри класса с другой. Внутри класса конструкции вида IList<string> list = new List<string>() теоретически смысл имеют, но практика показывает что смысл этот стремится к 0.
В большинстве случаев контракт коллекции торчащий наружу должен быть ienumerable<t>
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191452
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Алексей К,
конструкция "public int MyValue;" - для меня вообще загадочна.
Допустим есть проперти с паблик сеттером, допустим вы извне меняете естественно через сеттер, а изнутри класса меняете через поле.Где было предложено менять снаружи через сеттер, а внутри через поле? Я такого не помню.

Denis.У вас в проперти инвалид значение и вы хотите поставить брейкпоинт чтобы поглядеть колстек. Что будете делать? И почему сразу изнутри класса не юзать гетеры сетеры?(про вырожденные случаи не надо).Что мешает оперативно преобразовать поле в свойство?

Вызывающему коду вроде
Код: c#
1.
obj.MyValue = 18;

всё равно, поле это или свойство. Изменять его не придётся.
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191457
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.делай так чтобы торчали интерфейсыТорчащий наружу IEnumerable может выйти боком в условиях многопоточности.
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191459
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТорчащий наружу IEnumerable может выйти боком в условиях многопоточности.
В условиях многопоточности выйти боком могут гораздо более простые вещи. :)
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191478
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
так о том речь и шла по моему пониманию - юзать ли уже существующие проперти внутри класса через методы или через поля? Я утверждаю что по-умолчанию через методы(геторы сеторы)

Про многопоточность - это совсем отдельная песня.
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191480
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КDenis.делай так чтобы торчали интерфейсыТорчащий наружу IEnumerable может выйти боком в условиях многопоточности.
Блин, я уже сделал айэнумерейбл!

А можете пример привести, когда в условиях многопоточности айэнумерейбл может вылезти боком и почему?
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191483
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Алексей Кпропущено...
Торчащий наружу IEnumerable может выйти боком в условиях многопоточности.
Блин, я уже сделал айэнумерейбл!

А можете пример привести, когда в условиях многопоточности айэнумерейбл может вылезти боком и почему?
Не тронь! Оставь как сделал :)
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191492
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Алексей К,
конструкция "public int MyValue;" - для меня вообще загадочна.
Допустим есть проперти с паблик сеттером, допустим вы извне меняете естественно через сеттер, а изнутри класса меняете через поле. У вас в проперти инвалид значение и вы хотите поставить брейкпоинт чтобы поглядеть колстек. Что будете делать? И почему сразу изнутри класса не юзать гетеры сетеры?(про вырожденные случаи не надо). Вообще вопрос настолько очевидный, что его даже как-то странно обсуждать.
Ну, выше же говорили про производительность, что это лишний вызов метода, который где-то на порядок медленнее прямого обращения к полю (судя по старым тестам ещё времён фреймворк 1-1.1, может, 2). Поэтому, скажем, обращение к полю через геттер внутри класса лучше всё же заменить на прямое обращение к полю в задачах, где слишком много таких обращений (всякие итерации по сассивам и пр.). Правильно я говорю, да?
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191500
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

нет. Почти все неправильно. Забудь об этом и не вспоминай:). Я серьезно.
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191501
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Алексей Кпропущено...
Торчащий наружу IEnumerable может выйти боком в условиях многопоточности.
Блин, я уже сделал айэнумерейбл!

А можете пример привести, когда в условиях многопоточности айэнумерейбл может вылезти боком и почему?
Здесь http://msdn.microsoft.com/en-us/library/system.collections.ienumerable.aspx
и здесь http://msdn.microsoft.com/en-us/library/9eekhta0.aspx вообще ничего про потоки не написано (искал по "thre" по странице).
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191528
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Алексей Кпропущено...
Торчащий наружу IEnumerable может выйти боком в условиях многопоточности.
Блин, я уже сделал айэнумерейбл!

А можете пример привести, когда в условиях многопоточности айэнумерейбл может вылезти боком и почему?Наружу торчит Enumerable. Вы не знаете что за коллекция за ним скрыта. Делаете по ней foreach. При этом оказывается, что это List, в который добавляет элементы другой поток.

Если наружу торчит что-то неизменяемое (массив, ReadOnlyCollection и т. п.) как-то спокойнее.
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191618
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кuser7320пропущено...

Блин, я уже сделал айэнумерейбл!

А можете пример привести, когда в условиях многопоточности айэнумерейбл может вылезти боком и почему?Наружу торчит Enumerable. Вы не знаете что за коллекция за ним скрыта. Делаете по ней foreach. При этом оказывается, что это List, в который добавляет элементы другой поток.

Если наружу торчит что-то неизменяемое (массив, ReadOnlyCollection и т. п.) как-то спокойнее.
Ну, наверное есть же какие-нибудь механизмы, которые могут извещять всякий поток, работающий с коллекцией, что другой поток в данный момент изменяет её? Или, даже если и есть такие механизмы, то они ничего не дадут?
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38191759
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Ну, наверное есть же какие-нибудь механизмы, которые могут извещять всякий поток, работающий с коллекцией, что другой поток в данный момент изменяет её? Или, даже если и есть такие механизмы, то они ничего не дадут?
С многопоточностью халявы не бывает.
Обеспечение потокобезопасности приложения полностью на совести разработчика приложения.
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38192210
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кuser7320пропущено...

Блин, я уже сделал айэнумерейбл!

А можете пример привести, когда в условиях многопоточности айэнумерейбл может вылезти боком и почему?Наружу торчит Enumerable. Вы не знаете что за коллекция за ним скрыта. Делаете по ней foreach. При этом оказывается, что это List, в который добавляет элементы другой поток.

Если наружу торчит что-то неизменяемое (массив, ReadOnlyCollection и т. п.) как-то спокойнее.
Бред сивой кобылы опасного ковбоя
...
Рейтинг: 0 / 0
Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
    #38192214
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в методе торчит иенумарабле, неизвестно, что там в реализации. Может оказаться, что метод аккуратно форматирует жесткий диск.
...
Рейтинг: 0 / 0
25 сообщений из 61, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Какие лучше иметь данные-коллекции в классах - конкретные или интерфейсы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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