powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск в List (с помощью LINQ или лямбда) для внесения изменений
10 сообщений из 60, страница 3 из 3
Поиск в 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
10 сообщений из 60, страница 3 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск в List (с помощью LINQ или лямбда) для внесения изменений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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