powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск в List (с помощью LINQ или лямбда) для внесения изменений
60 сообщений из 60, показаны все 3 страниц
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313051
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот я нашёл всех учителей, начинающихся с "Мал"
Код: c#
1.
2.
List<Teacher> teachersMal =   
    teachers.FindAll(t => t.name.StartsWith("Мал"));  

или
Код: c#
1.
2.
3.
4.
5.
var teachersVar =   
    from t in teachers orderby t.name   
        where t.name.StartsWith("Мал") select t;  
  
List<Teacher> teachersMal = teachersVar.ToList<Teacher>();  



Проблема: элементы нашёл, но в итоге получил их копии. А есть необходимость вносить изменения в них. Как мне найдя элемент иметь ссылку на него, а не его копию?

Преимущество древнего подхода путём простого перебора всей коллекции в том, что при нахождении элемента я знаю, не только этот элемент, но и его местонахождение в массиве.
Т.о. я могу внести изменения и, скажем, изменить зарплату (salary) учителя вдвое.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313060
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

С чего вдруг у тебя там копии
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313076
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Teacher это класс, то ты получил ссылки, если структура - то копию.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313091
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

а если подумать, то в LINQ можно одновременно выбирать и вносить изменения.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313188
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич АлександрCharles Weyland,

а если подумать, то в LINQ можно одновременно выбирать и вносить изменения.
А пример в студию?
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313239
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Если основываться на примере из первого поста, то примерно так.
1. В класс Teacher добавляем функцию для пересчета зарплаты:
Код: vbnet
1.
2.
3.
4.
    Friend Function RecalculateSalary(x As Decimal) As Teacher
        Me.Salary *= x
        Return Me
    End Function


2. В LINQ вызываем ее в select.
Код: vbnet
1.
2.
from t in teachers orderby t.name   
        where t.name.StartsWith("Мал") select t.RecalculateSalary(2)




Все.
получаем сразу список с пересчитаной зарплатой.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313256
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич Александр
Все.
получаем сразу список с пересчитаной зарплатой.

Вот откуда берутся учителя-миллиардеры
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313300
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisВот откуда берутся учителя-миллиардеры

Это о чем?
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313335
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич АлександрЭто о чем?

Можно случайно заджоинить учителя на ведомые им курсы и клево проапдейтить зарплату.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313410
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris,

А, ну так это само собой.
Конечно, надо понимать как работает LINQ.

но для простого select вполне рабочий вариант.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313801
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич АлександрЕвгенийВ,

Если основываться на примере из первого поста, то примерно так.
1. В класс Teacher добавляем функцию для пересчета зарплаты:
Код: vbnet
1.
2.
3.
4.
    Friend Function RecalculateSalary(x As Decimal) As Teacher
        Me.Salary *= x
        Return Me
    End Function


2. В LINQ вызываем ее в select.
Код: vbnet
1.
2.
from t in teachers orderby t.name   
        where t.name.StartsWith("Мал") select t.RecalculateSalary(2)




Все.
получаем сразу список с пересчитаной зарплатой.

Нубский код.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313805
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland
Преимущество древнего подхода путём простого перебора всей коллекции в том, что при нахождении элемента я знаю, не только этот элемент, но и его местонахождение в массиве.

Код: c#
1.
var indexed_teachers = teachers.Select((teacher,index) = > new {_teacher = teacher,_index = index} );


Ну и конечно же - у тебя там НЕ КОПИИ.

Но правильней было бы:

Код: c#
1.
filtered_teachers.ToList().ForEach(teacher => teacher.recalculate(2));



ИМХО
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313844
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandПреимущество древнего подхода путём простого перебора всей коллекции в том, что при нахождении элемента я знаю, не только этот элемент, но и его местонахождение в массиве

Код: c#
1.
teachers.Select((e,i) => new { Element = e, Index = i })



Представляешь!?
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313845
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Monochromatique,

оу, ты уже написал )
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313876
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueНо правильней было бы:

Код: c#
1.
filtered_teachers.ToList().ForEach(teacher => teacher.recalculate(2));



ИМХО
Один нарушил SRP, другой его подхватил, а сколько скопипастят? :)
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313894
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAОдин нарушил SRP, другой его подхватил, а сколько скопипастят? :)

А где здесь нарушение SRP?
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313914
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAОдин нарушил SRP, другой его подхватил, а сколько скопипастят? :)

А где здесь нарушение SRP?
Учитель пересчитывает себе зарплату.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313935
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и OCP до кучи нарушается :)
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313975
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttпропущено...


А где здесь нарушение SRP?
Учитель пересчитывает себе зарплату.

Ну ты и зануууууууууууууда.

Мне наверное нужно было сюда код ЗУП 3.0 вывалить, со словами - "СМАРИ-КАК-НАДА"!
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313981
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно, не ЗУП же пишем, можно и наговнить
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39313993
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttпропущено...


А где здесь нарушение SRP?
Учитель пересчитывает себе зарплату.

Интересно, а если там не учитель, а чиновник?
Они же так и делают )
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314084
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAУчитель пересчитывает себе зарплату.

А я думал, что времена наивного восприятия ООП: описание объекта и есть объект, уже прошли. Учитель это человек. А Teacher это класс.

Так и не понял, где тут нарушается SRP, и какое отношения семантика имеет к принципу SRP.


skyANAНу и OCP до кучи нарушается :)

А тут вообще непонятно. Где нарушается?
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314124
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТак и не понял, где тут нарушается SRP, и какое отношения семантика имеет к принципу SRP.

что есть SRP?
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314130
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВhVosttТак и не понял, где тут нарушается SRP, и какое отношения семантика имеет к принципу SRP.

что есть SRP?

Secure Remote Password )))))))))))

ЗП начисляется без пароля - скайана возбуждается на такие дела.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314134
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Monochromatique,

Если говорить об паталогическом SRP, класс Teacher вовсе не обязательно должен содержать логику расчёта зарплаты. Но это не мешает ему предоставлять метод вычисления ЗП, это отлично ложится в концепцию DDD и ничего не нарушает.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314138
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВчто есть SRP?

Принцип такой. Каждый должен заниматься своим делом и не лезть в чужие дела. Как-то так.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314139
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttMonochromatique,

Если говорить об паталогическом SRP, класс Teacher вовсе не обязательно должен содержать логику расчёта зарплаты. Но это не мешает ему предоставлять метод вычисления ЗП, это отлично ложится в концепцию DDD и ничего не нарушает.

Да мне решительно фиолетово; я на вопрос Charles Weyland отвечал. Про LINQ; думал, что зарплаты учителей в другом форуме обсуждаются)))))))))
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314141
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueДа мне решительно фиолетово; я на вопрос Charles Weyland отвечал. Про LINQ; думал, что зарплаты учителей в другом форуме обсуждаются)))))))))

Здесь всё обсуждается, и зарплаты учителей тоже. Кстати, ты тоже считаешь, что учителя должны податься в бизнес, если их не устраивают ЗП?
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314176
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttMonochromatiqueДа мне решительно фиолетово; я на вопрос Charles Weyland отвечал. Про LINQ; думал, что зарплаты учителей в другом форуме обсуждаются)))))))))

Здесь всё обсуждается, и зарплаты учителей тоже. Кстати, ты тоже считаешь, что учителя должны податься в бизнес, если их не устраивают ЗП?

Ну... Я скажу так - учительница моей дочери рассекает на Шкода Октавия более новой модели, чем у меня.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314241
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueЯ скажу так - учительница моей дочери рассекает на Шкода Октавия более новой модели, чем у меня
Снежана Денисовна?
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314785
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueskyANAпропущено...

Учитель пересчитывает себе зарплату.

Ну ты и зануууууууууууууда.Есть такое :) Ничего личного.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314787
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕсли говорить об паталогическом SRP, класс Teacher вовсе не обязательно должен содержать логику расчёта зарплаты. Но это не мешает ему предоставлять метод вычисления ЗП, это отлично ложится в концепцию DDD и ничего не нарушает.
В мемориз! Фраза для защиты говнокода на ревью :)
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314851
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

Ну прочитатйте уже наконец Рихтера, и узнайте о том, как структуры изменяются через boxing/unboxing+интерфейсы.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314951
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttЕсли говорить об паталогическом SRP, класс Teacher вовсе не обязательно должен содержать логику расчёта зарплаты. Но это не мешает ему предоставлять метод вычисления ЗП, это отлично ложится в концепцию DDD и ничего не нарушает.
В мемориз! Фраза для защиты говнокода на ревью :)

Бред какой-то несёшь. Если бы мог, ты бы конечно пояснил, но видимо агрументов у тебя по нулям.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39314953
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныCharles Weyland,

Ну прочитатйте уже наконец Рихтера, и узнайте о том, как структуры изменяются через boxing/unboxing+интерфейсы.

Ёжики плакали.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39315044
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAпропущено...

В мемориз! Фраза для защиты говнокода на ревью :)

Бред какой-то несёшь. Если бы мог, ты бы конечно пояснил, но видимо агрументов у тебя по нулям.
А что тут пояснять? Фраза мне твоя понравилась :)
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39315191
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА что тут пояснять? Фраза мне твоя понравилась :)

С чем не согласен?
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39315211
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAА что тут пояснять? Фраза мне твоя понравилась :)

С чем не согласен?
Для начала приведи базовые концепции DDD, а то ведь концепцию единого языка действительно не нарушить тем, что метод пересчёта зп в классе Teacher :)
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39315284
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
hey teacher leave those kids alone..
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39315295
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДля начала приведи базовые концепции DDD, а то ведь концепцию единого языка действительно не нарушить тем, что метод пересчёта зп в классе Teacher :)

Я так и не услышал с чем конкретно ты не согласен. Чем тебе публичный метод пересчёта ЗП, предоставляемый классом Teacher не угодил? Я уже сказал, что реализация этого расчёта может быть (и по сути должна бы) инкапсулирована в отдельном классе. В чём проблему ты видишь?
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39315321
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAДля начала приведи базовые концепции DDD, а то ведь концепцию единого языка действительно не нарушить тем, что метод пересчёта зп в классе Teacher :)

Я так и не услышал с чем конкретно ты не согласен. Чем тебе публичный метод пересчёта ЗП, предоставляемый классом Teacher не угодил? Я уже сказал, что реализация этого расчёта может быть (и по сути должна бы) инкапсулирована в отдельном классе. В чём проблему ты видишь?
Я же чёрным по белому написал: нарушает SRP и OCP :)
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39315446
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЯ же чёрным по белому написал: нарушает SRP и OCP :)

Ну я так не считаю, и пояснил свою мысль. Почему у тебя чего-то там нарушает, видимо у тебя сугубо своё понимание принципов.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39315728
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAЯ же чёрным по белому написал: нарушает SRP и OCP :)

Ну я так не считаю, и пояснил свою мысль. Почему у тебя чего-то там нарушает, видимо у тебя сугубо своё понимание принципов.
Не думаю. Какбы я в команде работаю с самого начала своей карьеры и принципы эти не с одним специалистом обсуждал.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39315816
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе думаю. Какбы я в команде работаю с самого начала своей карьеры и принципы эти не с одним специалистом обсуждал.
И что решили? :)
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39315924
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAНе думаю. Какбы я в команде работаю с самого начала своей карьеры и принципы эти не с одним специалистом обсуждал.
И что решили? :)
По какому вопросу?
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39315986
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе думаю. Какбы я в команде работаю с самого начала своей карьеры и принципы эти не с одним специалистом обсуждал.

Ясно, закрытая секретная информация для узкого круга специалистов
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316011
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНе думаю. Какбы я в команде работаю с самого начала своей карьеры и принципы эти не с одним специалистом обсуждал.

Ясно, закрытая секретная информация для узкого круга специалистов
Если ты про S.O.L.I.D., то очень уж широк тот узкий круг :) Печально, что ты не в нём.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316040
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЕсли ты про S.O.L.I.D., то очень уж широк тот узкий круг :)
Настолько, надо сказать, широк, и с таким широким спектром мнений, что само понятие SOLID сейчас приобрело все черты схоластики.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316043
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЕсли ты про S.O.L.I.D., то очень уж широк тот узкий круг :) Печально, что ты не в нём.

Свидетели Иеговы SOLID детектед. Принципы хорошие и при правильном, не слепом применении полезные.

Но когда начинается упоротый бред в виде «учитель не должен считать себе зарплату», становится ясно, что тут уже попахивает дешёвой религией, а не инженерными принципами.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316047
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныНастолько, надо сказать, широк, и с таким широким спектром мнений, что само понятие SOLID сейчас приобрело все черты схоластики.

В некоторых кругах это приобрело все черты религии. Сейчас уже есть все шансы, во время собеседования, на замечание, что слепое следование SOLID может быть вредным, получить в ответ обиженное «всё понятно, спасибо, мы вам перезвоним».
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316257
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAЕсли ты про S.O.L.I.D., то очень уж широк тот узкий круг :) Печально, что ты не в нём.

Свидетели Иеговы SOLID детектед. Принципы хорошие и при правильном, не слепом применении полезные.

Но когда начинается упоротый бред в виде «учитель не должен считать себе зарплату», становится ясно, что тут уже попахивает дешёвой религией, а не инженерными принципами.
Начнём с того, что не считать, а пересчитывать. В реальности учителя самостоятельно не пересчитывают себе зарплату :)
Считать какая у них зарплата, они могут хоть каждый день, teacher.RecalculateSalary(2) выглядит как учитель сам себе поднял оклад в два раза.
Ты конечно можешь считать это объективной реальностью, но вот лично я такого не видел :)

Потом надо отметить, что S.O.L.I.D. - это про проектирование классов. И я уверен, что изначально класс Teacher был придуман ТС вполне для определённых задач никак не связанных с пересчётом оклада.

Также мне категорически не нравится тут 19695513 то, что состояние объекта изменяется в момент запроса этого объекта из хранилища.

Что касается нарушения OCP... Глядя на этот код: teacher.RecalculateSalary(2) , - у меня складывается впечатление, что предусмотрен только один метод пересчёта оклада, а именно увеличение оклада в N раз.
А в жизни оклады пересматриваются после окончания испытательного срока, при повышении, при понижении, при смене должности, при смене ставки.
В терминах проектирования - это означает, что есть разные стратегии пересчёта оклада. И на мой взгляд метод RecalculateSalary должен принимать не число, а именно стратегию, или некий объект, её описывающую.
Тогда класс, где сей метод будет реализован, действительно будет открыт для расширения, но закрыты для изменения.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316258
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttСон Веры ПавловныНастолько, надо сказать, широк, и с таким широким спектром мнений, что само понятие SOLID сейчас приобрело все черты схоластики.

В некоторых кругах это приобрело все черты религии.
Что за круги такие? :)
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316259
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныskyANAЕсли ты про S.O.L.I.D., то очень уж широк тот узкий круг :)
Настолько, надо сказать, широк, и с таким широким спектром мнений, что само понятие SOLID сейчас приобрело все черты схоластики.
Вопрос о том, насколько удаётся в реальных проектах соблюдать принципы S.O.L.I.D. - это отдельный вопрос.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316318
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНачнём с того, что не считать, а пересчитывать. В реальности учителя самостоятельно не пересчитывают себе зарплату :)

Ну так и давай начнём прежде всего с того, что класс Teacher не учитель :) Ведь слово не воробей, и вообще не птица! А если уж обобщать, то учитель это сотрудник, а отдельные сотрудники именно этим и занимаются — пересчитывают зарплату, и себе и другим. В общем тут на лицо, не верный постулат, от которого исходят неверные выводы.

skyANAСчитать какая у них зарплата, они могут хоть каждый день, teacher.RecalculateSalary(2) выглядит как учитель сам себе поднял оклад в два раза.
Ты конечно можешь считать это объективной реальностью, но вот лично я такого не видел :)

Почему Teacher не может предоставлять интерфейс для любых операций, которые касаются объект физического мира, который он представляет? В том числе, пересчёт зарплаты. И уж что-что, а говорить, что дескать учитель может пересчитать себе зарпату, это значит признать, что объект класса сам живёт своей жизнью, сам вызывает свои методы когда ему вздумается. Бред, не правда ли? Пересчитывает зарплату тот, кто вызывает метод RecalculateSalary , смотри где расположен этот вызов и тебе сразу станет ясен виновник.

skyANAПотом надо отметить, что S.O.L.I.D. - это про проектирование классов. И я уверен, что изначально класс Teacher был придуман ТС вполне для определённых задач никак не связанных с пересчётом оклада.

Если речь идёт исключительно про твою уверенность, то спорить сложно. А с точки зрения проектирования, я проблемы не вижу. Касательно сопровождения, чем ближе расположен код реализации к использованию, тем удобнее, проще и вообще это тру гуд. Можно спроектировать всё так, что расчёт/пересчёт зарплаты будет расположен вообще отдельно и независимо. Но часто бывает необходимость запихать всё в фасад, чтобы всё было под рукой, особенно если в команде существует группа прикладных программистов, которые пишут непосредственно бизнес.


skyANAТакже мне категорически не нравится тут 19695513 то, что состояние объекта изменяется в момент запроса этого объекта из хранилища.

Тут согласен на все 100.


skyANAЧто касается нарушения OCP... Глядя на этот код: teacher.RecalculateSalary(2) , - у меня складывается впечатление, что предусмотрен только один метод пересчёта оклада, а именно увеличение оклада в N раз.
А в жизни оклады пересматриваются после окончания испытательного срока, при повышении, при понижении, при смене должности, при смене ставки.

Я думаю, что приводится упрощённый пример в вакууме. Конечно в реале, одного метода явно будет недостаточно. Возможно, Teacher мог бы возвращать объект управления его зарплатой. Или наоборот, принимать стратегию, или это вообще может быть отдельный слой, который можно заменить.


skyANAВ терминах проектирования - это означает, что есть разные стратегии пересчёта оклада. И на мой взгляд метод RecalculateSalary должен принимать не число, а именно стратегию, или некий объект, её описывающую.
Тогда класс, где сей метод будет реализован, действительно будет открыт для расширения, но закрыты для изменения.

Ну это же вообще может быть фасад, не содержащий ни грамма логики.

А вообще, спасибо за детальные разъяснения своей позиции, наконец дождался
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316321
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЧто за круги такие? :)

Красные, под глазами
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316393
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНачнём с того, что не считать, а пересчитывать. В реальности учителя самостоятельно не пересчитывают себе зарплату :)

Ну так и давай начнём прежде всего с того, что класс Teacher не учитель :) Ведь слово не воробей, и вообще не птица! А если уж обобщать, то учитель это сотрудник, а отдельные сотрудники именно этим и занимаются — пересчитывают зарплату, и себе и другим. В общем тут на лицо, не верный постулат, от которого исходят неверные выводы.
И кого же описывает класс Teacher, если не учителя? Особенно в свете того, что ТС пилит программу для облегчения проведения соревнований в определённой школе? :)
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316400
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAОсобенно в свете того, что ТС пилит программу для облегчения проведения соревнований в определённой школе? :)
поразительная внимательность
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316445
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ кого же описывает класс Teacher, если не учителя? Особенно в свете того, что ТС пилит программу для облегчения проведения соревнований в определённой школе? :)

В этом свете следование SOLID вообще бессмысленно
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316473
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAИ кого же описывает класс Teacher, если не учителя? Особенно в свете того, что ТС пилит программу для облегчения проведения соревнований в определённой школе? :)

В этом свете следование SOLID вообще бессмысленно
Да суть не в SOLID :) А в том, что на форуме надо постить грамотный код, чтобы юные падаваны в проекты свои не тащили шлак всякий.
...
Рейтинг: 0 / 0
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
    #39316670
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДа суть не в SOLID :) А в том, что на форуме надо постить грамотный код, чтобы юные падаваны в проекты свои не тащили шлак всякий.

Ну да..
...
Рейтинг: 0 / 0
60 сообщений из 60, показаны все 3 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск в List (с помощью LINQ или лямбда) для внесения изменений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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