Форум: "Прочее";
Текущий архив: 2009.08.23;
Скачать: [xml.tar.bz2];
ВнизК чему может привести частое использование overload функций? Найти похожие ветки
← →
b/@. © (2009-06-25 11:00) [0]Добрый день.
Пишу тут один небольшой модуль. Внезапно поразило то, что очень часто стал использовать перегружаемые функции. На 300 строк 4 варианта одной функции с разными параметрами, и еще 3 другой.
Не сильно ли это вредит пониманию модуля и стилю программирования вообще ?
← →
Pavia © (2009-06-25 11:42) [1]
> е сильно ли это вредит пониманию модуля и стилю програ
Как помне так улучшает. У меня тоже модули там реализации как для целых так и дробных и еще комплексных. Тоже самое с массивами два типа можно задать как array, а можно и через указатель.
Зато не мучаешься нужно сложить: массивы, переменные вектора одна функция и никаких проблем особенно с разными типами.
← →
Б (2009-06-25 12:37) [2]А что очень удобно.
Не надо парится на счёт разных типов данных.
У меня в D3D в вершинном буфере несколько перегруженных методов для работы с разными типами вертексов. Удобно.
← →
b/@. © (2009-06-25 15:34) [3]Просто я использую перегрузку функций не только для работы с разными типами, а также для сходных действий.
Поясню на примере функцииTCustomForm.Show();
:
в моём варианте она могла бы выглядеть так
procedure Show(); overload;
procedure Show(AState: TWindowState); overload;
procedure Show(APosition: TPoint; ABounds: TRect); overload;
Или же проще назвать похожие методы разными именами ?
← →
DVM © (2009-06-25 15:39) [4]
> b/@. © (25.06.09 15:34) [3]
я тоже так делаю, считаю, что это нормально, даже удобно иногда.
← →
Б (2009-06-25 15:40) [5]OpenGL почти все методы перегружены.
← →
@!!ex © (2009-06-25 15:44) [6]> [5] Б (25.06.09 15:40)
Уних названия разные.
glVertex2f
glVertex2i
glVertex2fv
и т.д.
← →
clickmaker © (2009-06-25 15:49) [7]> Или же проще назвать похожие методы разными именами ?
как раз в этом случае это нормально.
в дотнете, например, вообще оверлоад на оверлоаде сидит и оверлоадом погоняет
← →
Тимохов_ (2009-06-25 15:53) [8]я стараюсь не пользоваться в принципе.
воду только мутит.
хотя, конечно, использую.
← →
Б (2009-06-25 16:11) [9]
> @!!ex © (25.06.09 15:44) [6]
> > [5] Б (25.06.09 15:40)
>
> Уних названия разные.
А как же:
glTranslate
glRotate
glMap
glMaterial
и т.д.
← →
@!!ex © (2009-06-25 16:39) [10]> [9] Б (25.06.09 16:11)
Name
glTranslate — multiply the current matrix by a translation matrix
C Specification
void glTranslated( GLdouble x,
GLdouble y,
GLdouble z);
void glTranslatef( GLfloat x,
GLfloat y,
GLfloat z);
Parameters
x, y, z
Specify the x, y, and z coordinates of a translation vector.
(C) http://www.opengl.org/sdk/docs/man/xhtml/glTranslate.xml
Перекрытые методы это изобретение паскальщиков и на мой взгляд не самое лучшее, ибо стандарту не соответствует:procedure glTranslated; external opengl32;
procedure glTranslatef; external opengl32;
procedure glTranslate(x,y,z: GLdouble); external opengl32 name "glTranslated";
procedure glTranslate(x,y,z: GLfloat); external opengl32 name "glTranslatef";
(C) opengl.pas
← →
Пит (2009-06-25 16:59) [11]Удалено модератором
← →
TUser © (2009-06-25 17:55) [12]Имхо, название процедуры/функции/метода должно ясно отражать его суть и отличаться от сходных действий. Остальное от лукавого. Соответственно, если надо с кладывать и векторы, и числа, и комплексные и пр. - перегружаю. В остальном - на фиг.
← →
Б (2009-06-25 18:47) [13]
> Перекрытые методы это изобретение паскальщиков и на мой
> взгляд не самое лучшее, ибо стандарту не соответствует:
Я про OpenGL.pas. Хоть и не стандарт, но зато удобно - не писать префиксы.
← →
Б (2009-06-25 18:52) [14]Компилятор сам определит что куда. Да и скорость не снизится.
← →
@!!ex © (2009-06-25 18:52) [15]> [13] Б (25.06.09 18:47)
Угу. А потом захочешь подключить OpenGL15, а там все по стандарту.. А наш код не компилится... И вот идет переработка проекта...
ПРи этом если все делать по стандарту, то ненадо нстрочки менять.
Стандарты придумлаи недаром, они списают от множества потенциальных проблем.
НЕненене, Дэвид Блэйн, ненадо нам такого счастья. :)
Вообще overload вещь хорошая, но не в данном случае.
← →
Eraser © (2009-06-25 18:57) [16]> [7] clickmaker © (25.06.09 15:49)
> в дотнете, например, вообще оверлоад на оверлоаде сидит
> и оверлоадом погоняет
кстати да, очень долго они не хотели делать необязательные параметры, мотивируя тем, что мол пользуйтесь перегрузкой, но вроде здравый смысл все таки восторжествовал.
← →
clickmaker © (2009-06-25 19:18) [17]> что мол пользуйтесь перегрузкой
ну вот в некоторых конструкторах перегрузка удобна, имхо.
Например, в том же StreamReader, которому можно подсунуть и поток и путь
← →
Кто б сомневался © (2009-06-25 19:34) [18]Имхо лучше так как вы не перегружать.
Сложно читать в код.
Как пример можно привести - функции Show и ShowModal. их можно было бы назвать одинаково, но лучше если они будут названы по разному.
← →
clickmaker © (2009-06-25 19:44) [19]> функции Show и ShowModal. их можно было бы назвать одинаково
в данном случае - да, параметр "true" у Show ни о чем не скажет на первый взгляд.
Тогда как new StreamReader(filePath) и new StreamReader(stream) говорят сами за себя.
← →
Anatoly Podgoretsky © (2009-06-25 20:58) [20]> Eraser (25.06.2009 18:57:16) [16]
Правильно, что не хотели, но не правильно, что советовали.
← →
oxffff © (2009-06-25 21:08) [21]
> К чему может привести частое использование overload функций?
>
К запору.
← →
AndreyV © (2009-06-25 21:14) [22]Вот я всё думаю с чем у меня ассоциируется название темы, может с чем-то медицинским или "К чему может привести частое..." употребление чего-либо.:)
Думаю в случае с функциями количество, если с качеством всё в порядке, к плохому исходу не приведёт.
← →
Б (2009-06-25 21:31) [23]
> А потом захочешь подключить OpenGL15, а там все по стандарту.
Лучше б они в свой пресловутый древний стандарт включили перегруженные методы. Если что, то написать утилиту перехода не составит труда. ;)
← →
@!!ex © (2009-06-25 21:33) [24]> [23] Б (25.06.09 21:31)
Зачем?
← →
AndreyV © (2009-06-25 21:38) [25]> [23] Б (25.06.09 21:31)
> Лучше б они в свой пресловутый древний стандарт включили
> перегруженные методы.
В Си их нет.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.08.23;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.005 c