OberonCore
https://forum.oberoncore.ru/

Проблема безопасности софта стоит колом
https://forum.oberoncore.ru/viewtopic.php?f=57&t=6729
Страница 2 из 2

Автор:  Александр Ильин [ Суббота, 06 Март, 2021 06:50 ]
Заголовок сообщения:  Re: Проблема безопасности софта стоит колом

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

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

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

Автор:  Rifat [ Суббота, 06 Март, 2021 14:34 ]
Заголовок сообщения:  Re: Проблема безопасности софта стоит колом

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

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/