OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 09:26

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Суббота, 06 Март, 2021 06:50 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Rifat писал(а):
Хотелось бы, чтобы комментаторы немного поясняли свое мнение, чем именно они возмущены? Тем, что для разных типов используется перегруженная функция с одним и тем же именем, или чем-то другим.
Лично я возмущён тем, что ваши сотрудники криво и небезопасно преизобретают виртуальные методы вместо того, чтобы разбить функционал по смысловым уровням между классами. В этом и должен бы заключаться рефакторинг как структурное преобразование программы, будь он автоматизированный или пистолетизированный. Разбиение на части, вынос общих множителей (факторов) за скобки.

Разве не в том суть виртуальных методов, чтобы сделать IF по типу параметра и вызвать соответствующий этому типу код? И это со всяческими гарантиями корректности, проверками на этапе компиляции и т.п.

Цитата:
Был код следующего вида:
void Func(BaseType t);
{
if (t is ChildType) { Func((ChildType)t); }
}
А должен был быть просто: t.Func();


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 06 Март, 2021 14:34 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
На самом деле я не понимаю, что люди привязались к моему примеру. То есть я не выкладывал реальный код, а просто написал код, который иллюстрирует ошибку. Кто-то предположил, что в реальном коде там есть какое-то хранилище и поэтому для каждого типа должен быть свой объект. Это неправильное предположение. Про то, что надо использовать t.Func в другой теме уже писали, что "ООП ради ООП" тоже не очень хорошо. В принципе, там как раз такой случай, когда отдельный объект для обработки отдельных ситуаций не создается.
Лично мне не нравится там то, что используются перегруженные функции. Можно было бы просто для разных типов создать функции с разными именами и это было бы надежней в том плане, что изменение одной из перегруженных функций не сломало бы программу. Более того, компилятор автоматически нашел бы то место, где надо еще добавить дополнительный параметр.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB