|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Вот я нашёл всех учителей, начинающихся с "Мал" Код: c# 1. 2.
или Код: c# 1. 2. 3. 4. 5.
Проблема: элементы нашёл, но в итоге получил их копии. А есть необходимость вносить изменения в них. Как мне найдя элемент иметь ссылку на него, а не его копию? Преимущество древнего подхода путём простого перебора всей коллекции в том, что при нахождении элемента я знаю, не только этот элемент, но и его местонахождение в массиве. Т.о. я могу внести изменения и, скажем, изменить зарплату (salary) учителя вдвое. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 01:38 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Charles Weyland, С чего вдруг у тебя там копии ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 04:16 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Если Teacher это класс, то ты получил ссылки, если структура - то копию. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 06:43 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Charles Weyland, а если подумать, то в LINQ можно одновременно выбирать и вносить изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 07:50 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Диклевич АлександрCharles Weyland, а если подумать, то в LINQ можно одновременно выбирать и вносить изменения. А пример в студию? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 10:31 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
ЕвгенийВ, Если основываться на примере из первого поста, то примерно так. 1. В класс Teacher добавляем функцию для пересчета зарплаты: Код: vbnet 1. 2. 3. 4.
2. В LINQ вызываем ее в select. Код: vbnet 1. 2.
Все. получаем сразу список с пересчитаной зарплатой. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 11:21 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Диклевич Александр Все. получаем сразу список с пересчитаной зарплатой. Вот откуда берутся учителя-миллиардеры ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 11:31 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
PallarisВот откуда берутся учителя-миллиардеры Это о чем? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 12:18 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Диклевич АлександрЭто о чем? Можно случайно заджоинить учителя на ведомые им курсы и клево проапдейтить зарплату. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 12:54 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Pallaris, А, ну так это само собой. Конечно, надо понимать как работает LINQ. но для простого select вполне рабочий вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 13:54 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Диклевич АлександрЕвгенийВ, Если основываться на примере из первого поста, то примерно так. 1. В класс Teacher добавляем функцию для пересчета зарплаты: Код: vbnet 1. 2. 3. 4.
2. В LINQ вызываем ее в select. Код: vbnet 1. 2.
Все. получаем сразу список с пересчитаной зарплатой. Нубский код. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 00:19 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Charles Weyland Преимущество древнего подхода путём простого перебора всей коллекции в том, что при нахождении элемента я знаю, не только этот элемент, но и его местонахождение в массиве. Код: c# 1.
Ну и конечно же - у тебя там НЕ КОПИИ. Но правильней было бы: Код: c# 1.
ИМХО ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 00:23 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Charles WeylandПреимущество древнего подхода путём простого перебора всей коллекции в том, что при нахождении элемента я знаю, не только этот элемент, но и его местонахождение в массиве Код: c# 1.
Представляешь!? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 07:48 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Monochromatique, оу, ты уже написал ) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 07:49 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
MonochromatiqueНо правильней было бы: Код: c# 1.
ИМХО Один нарушил SRP, другой его подхватил, а сколько скопипастят? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 08:51 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAОдин нарушил SRP, другой его подхватил, а сколько скопипастят? :) А где здесь нарушение SRP? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 09:24 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttskyANAОдин нарушил SRP, другой его подхватил, а сколько скопипастят? :) А где здесь нарушение SRP? Учитель пересчитывает себе зарплату. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 09:37 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Ну и OCP до кучи нарушается :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 09:55 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAhVosttпропущено... А где здесь нарушение SRP? Учитель пересчитывает себе зарплату. Ну ты и зануууууууууууууда. Мне наверное нужно было сюда код ЗУП 3.0 вывалить, со словами - "СМАРИ-КАК-НАДА"! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 10:35 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Правильно, не ЗУП же пишем, можно и наговнить ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 10:39 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAhVosttпропущено... А где здесь нарушение SRP? Учитель пересчитывает себе зарплату. Интересно, а если там не учитель, а чиновник? Они же так и делают ) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 10:50 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAУчитель пересчитывает себе зарплату. А я думал, что времена наивного восприятия ООП: описание объекта и есть объект, уже прошли. Учитель это человек. А Teacher это класс. Так и не понял, где тут нарушается SRP, и какое отношения семантика имеет к принципу SRP. skyANAНу и OCP до кучи нарушается :) А тут вообще непонятно. Где нарушается? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 11:44 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttТак и не понял, где тут нарушается SRP, и какое отношения семантика имеет к принципу SRP. что есть SRP? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 12:12 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
ЕвгенийВhVosttТак и не понял, где тут нарушается SRP, и какое отношения семантика имеет к принципу SRP. что есть SRP? Secure Remote Password ))))))))))) ЗП начисляется без пароля - скайана возбуждается на такие дела. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 12:14 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Monochromatique, Если говорить об паталогическом SRP, класс Teacher вовсе не обязательно должен содержать логику расчёта зарплаты. Но это не мешает ему предоставлять метод вычисления ЗП, это отлично ложится в концепцию DDD и ничего не нарушает. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 12:17 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
ЕвгенийВчто есть SRP? Принцип такой. Каждый должен заниматься своим делом и не лезть в чужие дела. Как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 12:19 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttMonochromatique, Если говорить об паталогическом SRP, класс Teacher вовсе не обязательно должен содержать логику расчёта зарплаты. Но это не мешает ему предоставлять метод вычисления ЗП, это отлично ложится в концепцию DDD и ничего не нарушает. Да мне решительно фиолетово; я на вопрос Charles Weyland отвечал. Про LINQ; думал, что зарплаты учителей в другом форуме обсуждаются))))))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 12:20 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
MonochromatiqueДа мне решительно фиолетово; я на вопрос Charles Weyland отвечал. Про LINQ; думал, что зарплаты учителей в другом форуме обсуждаются))))))))) Здесь всё обсуждается, и зарплаты учителей тоже. Кстати, ты тоже считаешь, что учителя должны податься в бизнес, если их не устраивают ЗП? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 12:21 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttMonochromatiqueДа мне решительно фиолетово; я на вопрос Charles Weyland отвечал. Про LINQ; думал, что зарплаты учителей в другом форуме обсуждаются))))))))) Здесь всё обсуждается, и зарплаты учителей тоже. Кстати, ты тоже считаешь, что учителя должны податься в бизнес, если их не устраивают ЗП? Ну... Я скажу так - учительница моей дочери рассекает на Шкода Октавия более новой модели, чем у меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 12:43 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
MonochromatiqueЯ скажу так - учительница моей дочери рассекает на Шкода Октавия более новой модели, чем у меня Снежана Денисовна? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 13:33 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
MonochromatiqueskyANAпропущено... Учитель пересчитывает себе зарплату. Ну ты и зануууууууууууууда.Есть такое :) Ничего личного. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2016, 08:31 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttЕсли говорить об паталогическом SRP, класс Teacher вовсе не обязательно должен содержать логику расчёта зарплаты. Но это не мешает ему предоставлять метод вычисления ЗП, это отлично ложится в концепцию DDD и ничего не нарушает. В мемориз! Фраза для защиты говнокода на ревью :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2016, 08:32 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Charles Weyland, Ну прочитатйте уже наконец Рихтера, и узнайте о том, как структуры изменяются через boxing/unboxing+интерфейсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2016, 13:33 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAhVosttЕсли говорить об паталогическом SRP, класс Teacher вовсе не обязательно должен содержать логику расчёта зарплаты. Но это не мешает ему предоставлять метод вычисления ЗП, это отлично ложится в концепцию DDD и ничего не нарушает. В мемориз! Фраза для защиты говнокода на ревью :) Бред какой-то несёшь. Если бы мог, ты бы конечно пояснил, но видимо агрументов у тебя по нулям. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2016, 19:34 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныCharles Weyland, Ну прочитатйте уже наконец Рихтера, и узнайте о том, как структуры изменяются через boxing/unboxing+интерфейсы. Ёжики плакали. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2016, 19:36 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttskyANAпропущено... В мемориз! Фраза для защиты говнокода на ревью :) Бред какой-то несёшь. Если бы мог, ты бы конечно пояснил, но видимо агрументов у тебя по нулям. А что тут пояснять? Фраза мне твоя понравилась :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2016, 08:19 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAА что тут пояснять? Фраза мне твоя понравилась :) С чем не согласен? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2016, 19:28 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttskyANAА что тут пояснять? Фраза мне твоя понравилась :) С чем не согласен? Для начала приведи базовые концепции DDD, а то ведь концепцию единого языка действительно не нарушить тем, что метод пересчёта зп в классе Teacher :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2016, 20:33 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANA, hey teacher leave those kids alone.. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 04:16 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAДля начала приведи базовые концепции DDD, а то ведь концепцию единого языка действительно не нарушить тем, что метод пересчёта зп в классе Teacher :) Я так и не услышал с чем конкретно ты не согласен. Чем тебе публичный метод пересчёта ЗП, предоставляемый классом Teacher не угодил? Я уже сказал, что реализация этого расчёта может быть (и по сути должна бы) инкапсулирована в отдельном классе. В чём проблему ты видишь? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 07:21 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttskyANAДля начала приведи базовые концепции DDD, а то ведь концепцию единого языка действительно не нарушить тем, что метод пересчёта зп в классе Teacher :) Я так и не услышал с чем конкретно ты не согласен. Чем тебе публичный метод пересчёта ЗП, предоставляемый классом Teacher не угодил? Я уже сказал, что реализация этого расчёта может быть (и по сути должна бы) инкапсулирована в отдельном классе. В чём проблему ты видишь? Я же чёрным по белому написал: нарушает SRP и OCP :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 08:50 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAЯ же чёрным по белому написал: нарушает SRP и OCP :) Ну я так не считаю, и пояснил свою мысль. Почему у тебя чего-то там нарушает, видимо у тебя сугубо своё понимание принципов. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 11:23 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttskyANAЯ же чёрным по белому написал: нарушает SRP и OCP :) Ну я так не считаю, и пояснил свою мысль. Почему у тебя чего-то там нарушает, видимо у тебя сугубо своё понимание принципов. Не думаю. Какбы я в команде работаю с самого начала своей карьеры и принципы эти не с одним специалистом обсуждал. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 15:54 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAНе думаю. Какбы я в команде работаю с самого начала своей карьеры и принципы эти не с одним специалистом обсуждал. И что решили? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 17:07 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
ЕвгенийВskyANAНе думаю. Какбы я в команде работаю с самого начала своей карьеры и принципы эти не с одним специалистом обсуждал. И что решили? :) По какому вопросу? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2016, 21:22 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAНе думаю. Какбы я в команде работаю с самого начала своей карьеры и принципы эти не с одним специалистом обсуждал. Ясно, закрытая секретная информация для узкого круга специалистов ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 05:56 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttskyANAНе думаю. Какбы я в команде работаю с самого начала своей карьеры и принципы эти не с одним специалистом обсуждал. Ясно, закрытая секретная информация для узкого круга специалистов Если ты про S.O.L.I.D., то очень уж широк тот узкий круг :) Печально, что ты не в нём. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 08:53 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAЕсли ты про S.O.L.I.D., то очень уж широк тот узкий круг :) Настолько, надо сказать, широк, и с таким широким спектром мнений, что само понятие SOLID сейчас приобрело все черты схоластики. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 09:43 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAЕсли ты про S.O.L.I.D., то очень уж широк тот узкий круг :) Печально, что ты не в нём. Свидетели Иеговы SOLID детектед. Принципы хорошие и при правильном, не слепом применении полезные. Но когда начинается упоротый бред в виде «учитель не должен считать себе зарплату», становится ясно, что тут уже попахивает дешёвой религией, а не инженерными принципами. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 09:51 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныНастолько, надо сказать, широк, и с таким широким спектром мнений, что само понятие SOLID сейчас приобрело все черты схоластики. В некоторых кругах это приобрело все черты религии. Сейчас уже есть все шансы, во время собеседования, на замечание, что слепое следование SOLID может быть вредным, получить в ответ обиженное «всё понятно, спасибо, мы вам перезвоним». ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 09:56 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttskyANAЕсли ты про S.O.L.I.D., то очень уж широк тот узкий круг :) Печально, что ты не в нём. Свидетели Иеговы SOLID детектед. Принципы хорошие и при правильном, не слепом применении полезные. Но когда начинается упоротый бред в виде «учитель не должен считать себе зарплату», становится ясно, что тут уже попахивает дешёвой религией, а не инженерными принципами. Начнём с того, что не считать, а пересчитывать. В реальности учителя самостоятельно не пересчитывают себе зарплату :) Считать какая у них зарплата, они могут хоть каждый день, teacher.RecalculateSalary(2) выглядит как учитель сам себе поднял оклад в два раза. Ты конечно можешь считать это объективной реальностью, но вот лично я такого не видел :) Потом надо отметить, что S.O.L.I.D. - это про проектирование классов. И я уверен, что изначально класс Teacher был придуман ТС вполне для определённых задач никак не связанных с пересчётом оклада. Также мне категорически не нравится тут 19695513 то, что состояние объекта изменяется в момент запроса этого объекта из хранилища. Что касается нарушения OCP... Глядя на этот код: teacher.RecalculateSalary(2) , - у меня складывается впечатление, что предусмотрен только один метод пересчёта оклада, а именно увеличение оклада в N раз. А в жизни оклады пересматриваются после окончания испытательного срока, при повышении, при понижении, при смене должности, при смене ставки. В терминах проектирования - это означает, что есть разные стратегии пересчёта оклада. И на мой взгляд метод RecalculateSalary должен принимать не число, а именно стратегию, или некий объект, её описывающую. Тогда класс, где сей метод будет реализован, действительно будет открыт для расширения, но закрыты для изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 14:21 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttСон Веры ПавловныНастолько, надо сказать, широк, и с таким широким спектром мнений, что само понятие SOLID сейчас приобрело все черты схоластики. В некоторых кругах это приобрело все черты религии. Что за круги такие? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 14:22 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныskyANAЕсли ты про S.O.L.I.D., то очень уж широк тот узкий круг :) Настолько, надо сказать, широк, и с таким широким спектром мнений, что само понятие SOLID сейчас приобрело все черты схоластики. Вопрос о том, насколько удаётся в реальных проектах соблюдать принципы S.O.L.I.D. - это отдельный вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 14:25 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
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 должен принимать не число, а именно стратегию, или некий объект, её описывающую. Тогда класс, где сей метод будет реализован, действительно будет открыт для расширения, но закрыты для изменения. Ну это же вообще может быть фасад, не содержащий ни грамма логики. А вообще, спасибо за детальные разъяснения своей позиции, наконец дождался ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 15:52 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAЧто за круги такие? :) Красные, под глазами ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 15:54 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttskyANAНачнём с того, что не считать, а пересчитывать. В реальности учителя самостоятельно не пересчитывают себе зарплату :) Ну так и давай начнём прежде всего с того, что класс Teacher не учитель :) Ведь слово не воробей, и вообще не птица! А если уж обобщать, то учитель это сотрудник, а отдельные сотрудники именно этим и занимаются — пересчитывают зарплату, и себе и другим. В общем тут на лицо, не верный постулат, от которого исходят неверные выводы. И кого же описывает класс Teacher, если не учителя? Особенно в свете того, что ТС пилит программу для облегчения проведения соревнований в определённой школе? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 17:11 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAОсобенно в свете того, что ТС пилит программу для облегчения проведения соревнований в определённой школе? :) поразительная внимательность ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 17:15 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
skyANAИ кого же описывает класс Teacher, если не учителя? Особенно в свете того, что ТС пилит программу для облегчения проведения соревнований в определённой школе? :) В этом свете следование SOLID вообще бессмысленно ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 17:47 |
|
Поиск в List (с помощью LINQ или лямбда) для внесения изменений
|
|||
---|---|---|---|
#18+
hVosttskyANAИ кого же описывает класс Teacher, если не учителя? Особенно в свете того, что ТС пилит программу для облегчения проведения соревнований в определённой школе? :) В этом свете следование SOLID вообще бессмысленно Да суть не в SOLID :) А в том, что на форуме надо постить грамотный код, чтобы юные падаваны в проекты свои не тащили шлак всякий. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2016, 18:17 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1400331]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
others: | 265ms |
total: | 440ms |
0 / 0 |