powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вынос кода в отдельный модуль
43 сообщений из 43, показаны все 2 страниц
Вынос кода в отдельный модуль
    #38941619
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рассудите спор двух коллег.

Пример такой.

Есть 3 формы с 1ой кнопкой на каждой форме. При нажатии на кнопку на любой форме Background меняет цвет (то есть выполняется одна и таже функция).

Можно ли вынести эту функцию в отдельный Модуль или правильнее будет написать один и тот же код в каждой форме 3 раза?


В жизни этот код может быть 100-200 итд строк.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941626
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем Gили правильнее будет написать один и тот же код в каждой форме 3 раза?В Button1_Click ? Код на "100-200 итд строк"?
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941636
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941662
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем G,
Лучше а одно место, потом "зае..сь пыль глотать бегая по судам" (с)
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941668
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GМожно ли вынести эту функцию в отдельный Модуль или правильнее будет написать один и тот же код в каждой форме 3 раза?


В жизни этот код может быть 100-200 итд строк.

А какие тут могут быть рассуждения? Ну, какие аргументы со стороны "против выноса в отдельный модуль"?
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941671
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем G 3 раза?

Уже использование 2 раза - причина обьединить.

Но!
код коду рознь - плодить классы-усыновители некритичных для бизнеса функций - а кто ими будет пользоваться потом?
Создание всевозможных "Util" и хелперов - совсем не хорошо.
Я бы подумал о создании "абстрактного" базового класса. Наследование все-таки надежней говорит, что функция подходящая.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941672
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Против: Нарушение ОПП
За: Повышение читабельности, повторное использование.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941681
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GПротив: Нарушение ОПП

Какой принцип ООП нарушается?
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941686
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisАртем GПротив: Нарушение ОПП

Какой принцип ООП нарушается?
Инкапсуляция.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941694
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Pallarisпропущено...
Какой принцип ООП нарушается?
Инкапсуляция.

Поясни. Был создан метод, который на основе некоторых параметров предлагает новый цвет. Где нарушена инкапсуляция?
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941711
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Логика выноситься человеком из класса в модуль.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941713
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GPallaris,

Логика выноситься человеком из класса в модуль.

И что? Создал класс-хэлпер, который реализует некоторую логику. Далее класс-форма может либо пользоваться методом этого класса, либо нет.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941714
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавлю в догонку.

Логика выноситься человеком из класса в модуль для того, чтобы использовать потом эту логику еще раз в другой форме.

Ну и + типа в классе формы и так много событий и получается длинная портянка из кода... таким образом приводиться довыд в сторону читабельности.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941717
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PallarisАртем GPallaris,

Логика выноситься человеком из класса в модуль.

И что? Создал класс-хэлпер, который реализует некоторую логику. Далее класс-форма может либо пользоваться методом этого класса, либо нет.


Вот тот же довыд приводит и коллега. Мол и что?


Поэтому и вопрос. Кто прав? Почему прав? и хотелось бы услышать кто-нибудь делает так у себя в проектах.


Заранее спасибо за Ваши ответы.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941720
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GПоэтому и вопрос. Кто прав? Почему прав?.
SOLID (object-oriented design)
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941721
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GPallarisпропущено...


И что? Создал класс-хэлпер, который реализует некоторую логику. Далее класс-форма может либо пользоваться методом этого класса, либо нет.


Вот тот же довыд приводит и коллега. Мол и что?


Поэтому и вопрос. Кто прав? Почему прав? и хотелось бы услышать кто-нибудь делает так у себя в проектах.


Заранее спасибо за Ваши ответы.

- Ребе, что мне делать? У меня есть один петушок и одна курочка. Если я зарежу курочку, обидится петух. Если зарежу петуха, обидится курочка.
Раввин долго размышляет, потом сообщает свое решение:
– Режь петуха!
– Но тогда курочка обидится!
– Ну и пусть обижается!
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941724
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisПоясни. Был создан метод, который на основе некоторых параметров предлагает новый цвет. Где нарушена инкапсуляция?
Если этот метод static public, а используется для того, чтобы поменять цвет форме.
Причем, если он просто возвращает цвет - это еще туда-сюда, а если там сложный код, и для того, чтобы поменять нужны операции с самой формой, и ему дают форму (ссылку на) как параметр....

Я много раз сталкивался в чужих проэктах, с "Tools" , "Utils", "Helpers" - которые содержат статические функции, полезные для чего-то, а вот то, что они подойдут мне - судить по одному названию тяжело. A форму свою я куда попало посылать не хочу, мало ли чего с ней сделают...

А вот когда я нахожу функцию в базовом классе - тут я уверен, что она все сделает правильно.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941732
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129A форму свою я куда попало посылать не хочу, мало ли чего с ней сделают...

Не, объявление метода такое:
Код: sql
1.
public static Color GetBackgroundColor(bool rakSvistnul = false);
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941796
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PallarisАртем GПоэтому и вопрос. Кто прав? Почему прав?.
SOLID (object-oriented design)

Почитаем.


Ясности не добавило ( ввиду отсутствия прямых ответов
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38941836
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GДа.Ну это же хрень. Обработчики должны быть лёгкими :)
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942034
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAАртем GДа.Ну это же хрень. Обработчики должны быть лёгкими :)

Да согласен. Но в данном контексте это не суть важно.


Я поднял вопрос не из праздного любопытства. Хотелось бы услышать конкретный, короткий ответ.

Вот по сути тот же пример... но с другими сущьностями.

Есть класс OrderRepository. Где есть метод Add. И вдруг "разработчик" по каким-то причинам решает что логика в методе Add класса OrderRepository слишком длинная, и тут его еще осеняет что она похожа на логику в методе Add класса StudentRepository.
И тут у него возникает желание вынести этот большой да еще и повторяющийся кусок кода в МОДУЛЬ

Этому "разработчику" нравиться что не нужно объявлять переменную, а просто пишешь название модуля и появляется функция (похоже на static class)

По мне такое можно написать не зная теории aka матчасти.

Почему я против был такого выноса логики отдельно в модуль.
Возьму пример на зверях. Есть жираф. У него голова, ноги, хвост. Он может жрать и срать. Бегимот имеет тоже самое и делает тоже самое.
МОй коллега пытается вынести сранье жирафа только потому что это слишком сложный процесс у жирафа, добавляя при этом что бегимот тоже срет... и процессы у них схожи. ПО моему ОПП нам говорит что описывать сранье нужно у каждого в своем классе - это часть логики инкапсуляции.

Вот как то так...
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942036
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем G ПО моему ОПП нам говорит что описывать сранье нужно у каждого в своем классе - это часть логики инкапсуляции.


Еще говорят, что у класса должна быть своя область ответственности. Поэтому, если наш жираф срет золотом, то не ему нужно его нести в банк
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942042
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GВот как то так...

Я бы сказал так по поводу повторяющегося кода - лучше его не повторять. Потому что завтра ты решишь его оптимизировать, как ты будешь вспоминать, где он у тебя еще используется?

А вот какой подход применять - наследование, или отдельный модуль, - это вопрос другой. Если класс начинает лезть не в свое дело, повторяющийся код не слишком запутан и не требует кучи ссылочных объектов - то модуль (как пример с формой и свойством бэкграунд). Если же имеется незначительное отличие в поведении схожих сущностей (как пример с репозиторием) - то наследование.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942050
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PallarisАртем GВот как то так...

Я бы сказал так по поводу повторяющегося кода - лучше его не повторять. Потому что завтра ты решишь его оптимизировать, как ты будешь вспоминать, где он у тебя еще используется?


По моему это палка о двух концах.

Первый. Это ваш пример. Когда нужно повторяющийся код поменять только в одном месте для двух объектов или в 2х местах если он не вынесен в отдельный модуль (но тут я знаю в каких классах мне нужно менять).

Второй. Это может сложиться ситуация когда мне нужно изменить код, но только для одного объекта. Вынесенную часть кода придется его разъединить.

Студия конечно позволяет быстро найти все нужное по ссылкам над классом / модулем.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942055
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем G Это может сложиться ситуация когда мне нужно изменить код, но только для одного объекта.

Может, но это уже не повторяющийся код. Наследуйся.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942058
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GskyANAпропущено...
Ну это же хрень. Обработчики должны быть лёгкими :)

Да согласен. Но в данном контексте это не суть важно.


Я поднял вопрос не из праздного любопытства. Хотелось бы услышать конкретный, короткий ответ.

Вот по сути тот же пример... но с другими сущьностями.

Есть класс OrderRepository. Где есть метод Add. И вдруг "разработчик" по каким-то причинам решает что логика в методе Add класса OrderRepository слишком длинная, и тут его еще осеняет что она похожа на логику в методе Add класса StudentRepository.
И тут у него возникает желание вынести этот большой да еще и повторяющийся кусок кода в МОДУЛЬ

Этому "разработчику" нравиться что не нужно объявлять переменную, а просто пишешь название модуля и появляется функция (похоже на static class)

По мне такое можно написать не зная теории aka матчасти.

Почему я против был такого выноса логики отдельно в модуль.
Возьму пример на зверях. Есть жираф. У него голова, ноги, хвост. Он может жрать и срать. Бегимот имеет тоже самое и делает тоже самое.
МОй коллега пытается вынести сранье жирафа только потому что это слишком сложный процесс у жирафа, добавляя при этом что бегимот тоже срет... и процессы у них схожи. ПО моему ОПП нам говорит что описывать сранье нужно у каждого в своем классе - это часть логики инкапсуляции.

Вот как то так...а по мне так Вы тупо не освоили ООП дальше инкапсуляции.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942063
Mike_za
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Присоединяюсь. В ооп 3 базовых принципа. И помимо указанного есть еще наследование и полиморфизм. И что мешает реализовать указанную логику в базовом классе, я так и не понял. Если же ваша третья будущая форма начнет "испражняться золотом", то всегда можно будет ее метод переопределить
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942072
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
должно быть я один так и не понял что такое "модуль" :(
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942092
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike_zaИ что мешает реализовать указанную логику в базовом классе, я так и не понял.
1. Отсутствие множественного наследования классов может сыграть злую шутку.
2. При наследовании форм/юзерконтролов возможны проблемы с дизайнером.

Артем GРассудите спор двух коллег.

Пример такой.

Есть 3 формы с 1ой кнопкой на каждой форме. При нажатии на кнопку на любой форме Background меняет цвет (то есть выполняется одна и таже функция).

Можно ли вынести эту функцию в отдельный Модуль или правильнее будет написать один и тот же код в каждой форме 3 раза?


В жизни этот код может быть 100-200 итд строк.Конечно нужно произвести выделение класса (по Фаулеру).
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942097
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GPallarisпропущено...

SOLID (object-oriented design)

Почитаем.


Ясности не добавило ( ввиду отсутствия прямых ответов Здесь есть множество прямых ответов.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942103
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAа по мне так Вы тупо не освоили ООП дальше инкапсуляции.по-моему автор просто пришел за поддержкой против коллеги, поэтому и не видит "прямых ответов" - они не в его пользу.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942106
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GPallarisпропущено...


И что? Создал класс-хэлпер, который реализует некоторую логику. Далее класс-форма может либо пользоваться методом этого класса, либо нет.


Вот тот же довыд приводит и коллега. Мол и что?


Поэтому и вопрос. Кто прав? Почему прав? и хотелось бы услышать кто-нибудь делает так у себя в проектах.


Заранее спасибо за Ваши ответы.У меня проекты состоят из WinForms + ASP.NET приложений + Web, Web API, WCF и Win сервисы + Мобильные клиенты...

Как Вы думаете, что я размазываю по баттон кликам?
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942110
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyskyANAа по мне так Вы тупо не освоили ООП дальше инкапсуляции.по-моему автор просто пришел за поддержкой против коллеги, поэтому и не видит "прямых ответов" - они не в его пользу.+1

Если нет аргументов в пользу того, почему код задублирован в трёх местах, то пусть коллега пишет по своему (в отдельный "модуль")
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942112
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КАртем Gпропущено...


Почитаем.


Ясности не добавило ( ввиду отсутствия прямых ответов Здесь есть множество прямых ответов.Или здесь .
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942152
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GРассудите спор двух коллег.

Пример такой.

Есть 3 формы с 1ой кнопкой на каждой форме. При нажатии на кнопку на любой форме Background меняет цвет (то есть выполняется одна и таже функция).

Можно ли вынести эту функцию в отдельный Модуль или правильнее будет написать один и тот же код в каждой форме 3 раза?


В жизни этот код может быть 100-200 итд строк.

Топик не читал. Вынести обязательно даже если там одна строка.
Зато потом вы в одном месте можете управлять поведением всех трех форм, а не искать как умалишенный поиском по VS методов нажатия кнопак!
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942891
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike_zaПрисоединяюсь. В ооп 3 базовых принципа.
4 батенька!
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942892
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К Здесь есть множество прямых ответов.
Скучная книга.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942893
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAУ меня проекты состоят из WinForms + ASP.NET приложений + Web, Web API, WCF и Win сервисы + Мобильные клиенты...

Как Вы думаете, что я размазываю по баттон кликам?
WWF нету?
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38942913
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAУ меня проекты состоят из WinForms + ASP.NET приложений + Web, Web API, WCF и Win сервисы + Мобильные клиенты...

Как Вы думаете, что я размазываю по баттон кликам?
WWF нету?Нету. Исследовали возможность применения в одном месте, но как-то слишком сложно применимо оказалось.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38943094
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,

Есть вероятность что и инкапсуляцию я не понимаю так как надо ))

Antonariy,

В споре всегда кто-то против кого-то.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38943114
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GВ споре всегда кто-то против кого-то.
"В споре умные выясняют истину, а глупые - кто прав" (с)
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38943116
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВАлексей К Здесь есть множество прямых ответов.
Скучная книга.Не скучнее Паустовского.
...
Рейтинг: 0 / 0
Вынос кода в отдельный модуль
    #38947901
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныАртем GВ споре всегда кто-то против кого-то.
"В споре умные выясняют истину, а глупые - кто прав" (с)
Истина — в вине, чего её выяснять? : )
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вынос кода в отдельный модуль
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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