Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1245475073
TUser
2009-06-20 09:17
2009.08.23
Визбору - 75 !!!


15-1245756951
tesseract
2009-06-23 15:35
2009.08.23
FireBird прошёл в финалисты Community choice


2-1245681294
marantz85
2009-06-22 18:34
2009.08.23
Как переписать данные из динамического массива в memorystream?


4-1215102058
NIZAM
2008-07-03 20:20
2009.08.23
ОТКРЫРЬ ПАПКУ С ЗАДАННЫМ ФАЙЛОМ


15-1246004611
Knight
2009-06-26 12:23
2009.08.23
Скрин не передаётся по сети..





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский