powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Перегрузка процедур и функций. Зачем?
25 сообщений из 41, страница 1 из 2
Перегрузка процедур и функций. Зачем?
    #39001453
alcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предположим, в сотнях программ на предприятии уже используется первая процедура hire_emp (с параметрами "имя сотрудника" и "номер сотрудника"). Пусть необходимо создать новые программы, требующие нового алгоритма (позволяющего задавать дополнительно значения параметров "дата приема на работу" и "зарплата"). Без перегрузки пришлось бы найти все вхождения существующей процедуры hire_emp и, соответственно, изменить код. За счет перегрузки новую версию с четырьмя параметрами можно добавить без проблем — новые приложения будут использовать ее, а существующие программы смогут по-прежнему использовать версию с двумя параметрами.

Не проще ли создать процедуру с новым именем и использовать ее в новых программах?

Приведите пожалуйста пример, в котором использование перегрузки, ну просто необходимо на 110%.
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39001506
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alconНе проще ли создать процедуру с новым именем и использовать ее в новых программах?
Нет, не проще. После того, как такая ситуация случится три-четыре раза, у проектной команды мозги расплавятся помнить, процедура с каким именем соответствует какой ситуации и каким параметрам.

alconПриведите пожалуйста пример, в котором использование перегрузки, ну просто необходимо на 110%.
Примера "необходимо" нет и быть не может. А вот примеров "удобно" - сколько угодно.
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39001551
Cpt. Gray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Представь, что у тебя есть 10 типов, все эти 10 типов необходимо приводить в строку
String toString(один из 10 типов) {}

Без перегрузки тебе бы пришлось писать 10 методов с разными именами и вызывать для каждого типа, а с перегрузкой у тебя будет 1 метод и 10 реализаций под каждый тип
И тебе не нужно будет париться - вспоминать какой из 10 типов нужен для конкретного типа
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39001637
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cpt. GrayПредставь, что у тебя есть 10 типов, все эти 10 типов необходимо приводить в строку
String toString(один из 10 типов) {}

Без перегрузки тебе бы пришлось писать 10 методов с разными именами и вызывать для каждого типа, а с перегрузкой у тебя будет 1 метод и 10 реализаций под каждый тип
И тебе не нужно будет париться - вспоминать какой из 10 типов нужен для конкретного типаГлупости какие. От начала и до конца.
Во первых, будь точен в словах: Без перегрузки ты будешь писать десять функций с разными именами и параметрами. С перегрузкой ты будешь писать десять функций с разными параметрами и общим именем.
Во вторых, париться тоже не нужно. Ты всегда с легкостью вспомнишь что IntToString() это конвертация из int, а DoubleToString() это конвертация из double. И так для всех десяти типов.
Так что жить без перегрузки можно с легкостью и без единой проблемы.
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39001646
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlТак что жить без перегрузки можно с легкостью и без единой проблемы.
На этом месте я всегда рассказываю классическую историю. Когда-то, в самом начале своей работы стажёром в некоей конторе, я написал функцию, которая выполняла SQL-запрос и возвращала его результат. И назвал её Select. Потом я добавил к ней параметр, который указывал, какой connection использовать для выполнения запроса. В полном соответствии с ходом мысли топикстартера, я назвал её ESelect - мол, "развитая". И пожив так немного, я вдруг понял, что когда мне потребуется в следующий раз доработать функцию, я не смогу придумать для неё имени лучше, чем FSelect. Вот в этот момент я понял, зачем нужна перегрузка
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39001689
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlпариться тоже не нужно. Ты всегда с легкостью вспомнишь что IntToString() это конвертация из int, а DoubleToString() это конвертация из double. И так для всех десяти типов.а потом ты поменяешь тип у переменной с int на double и пойдёшь ходить по всей кодовой базе проекта, переименовывая все места, где ты эту переменную конвертишь в строку. "с легкостью и без единой проблемы."
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39001710
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во многих языках жили и живут без перегрузки и никто не страдает.

Хотя, конечно, вещь удобная.
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39001818
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В некоторых яызках где нет перегрузки, есть "необязательные" параметры. Тоже удобно, но правда менее производительнее.
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39001846
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychWhite Owlпариться тоже не нужно. Ты всегда с легкостью вспомнишь что IntToString() это конвертация из int, а DoubleToString() это конвертация из double. И так для всех десяти типов.а потом ты поменяешь тип у переменной с int на double и пойдёшь ходить по всей кодовой базе проекта, переименовывая все места, где ты эту переменную конвертишь в строку. "с легкостью и без единой проблемы."Во первых, я так понимаю что ни про sed, ни про функции рефакторинга в виндообразных редакторах ты не слышал?
Во вторых, а зачем менять тип переменной? Предположим уже есть большой проект (достаточно большой чтоб рефакторинг был посложнее). И в этом проекте есть переменная одного типа и тебе ВДРУГ захотелось сделать ее другого типа???
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39001847
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerWhite OwlТак что жить без перегрузки можно с легкостью и без единой проблемы.
На этом месте я всегда рассказываю классическую историю. Когда-то, в самом начале своей работы стажёром в некоей конторе, я написал функцию, которая выполняла SQL-запрос и возвращала его результат. И назвал её Select. Потом я добавил к ней параметр, который указывал, какой connection использовать для выполнения запроса. В полном соответствии с ходом мысли топикстартера, я назвал её ESelect - мол, "развитая". И пожив так немного, я вдруг понял, что когда мне потребуется в следующий раз доработать функцию, я не смогу придумать для неё имени лучше, чем FSelect. Вот в этот момент я понял, зачем нужна перегрузка И?
В чем смысл твоей истории?
Написал одну функцию, написал ее улучшенную версию, испугался что в будущем напишешь еще и третью версию и решил сменить свой стиль. Да, забавная байка.
Но как это сочетается с темой о перегрузке функций я не понял.
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39001889
Будь проще
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alcon,

Небходимости нет. Есть возможность. Это как сложносочиненное предложение, т.е. можно и без него, но иногда мысль донести с его помощью проще. Если функции семантически близки и имеют похожие сигнатуры, то почему бы и не обозвать их одинаково. Короче, главное, чтобы было понятно и просто.
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39001891
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alconНе проще ли создать процедуру с новым именем и использовать ее в новых программах?А конструктор класса? У него имя поменять нельзя. Разрушил всю ООП парадигму :(
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39001892
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alconПриведите пожалуйста пример, в котором использование перегрузки, ну просто необходимо на 110%.Привел
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39001940
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterА конструктор класса? У него имя поменять нельзя.
Ну, в нормальных языках можно.
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39002000
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я много работаю с интерфейсами (front-end), в частности в WPF.
Так как делать контрол с 0 просто глупо, а WPF для того и создан, чтоб мне не пришлось описывать поведение контролов с 0ля, я часто применяю перегрузку методов. Когда мне надо изменить поведение существующего контрола, внести изменения в компоновку на форме, добавить новой визуализации через рендеринг, а не через шаблоны, в моделях представлениях где тоже есть масса абстрактных и базовых классов это крайне полезно.
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39002106
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes Когда мне надо изменить поведение существующего контрола, внести изменения в компоновку на форме, добавить новой визуализации через рендеринг, а не через шаблоны, в моделях представлениях где тоже есть масса абстрактных и базовых классов это крайне полезно.Только это не перегрузка, а переопределение.
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39002162
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alconПриведите пожалуйста пример, в котором использование перегрузки, ну просто необходимо на 110%.
1. поддержка старых АПИ, когда основной код пишется внешними пользователями
2. при реализации устоявшихся формул (н-р, математических)
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39002274
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlВо первых, я так понимаю что ни про sed, ни про функции рефакторинга в виндообразных редакторах ты не слышал?спор ради спора. Ты же не можешь не понимать, что при наличии перегруженной функции тебе не потребуется ни sed, ни функция рефакторинга, просто поменял тип, и вуаля - всё работает, как должно.

White OwlВо вторых, а зачем менять тип переменной? Предположим уже есть большой проект (достаточно большой чтоб рефакторинг был посложнее). И в этом проекте есть переменная одного типа и тебе ВДРУГ захотелось сделать ее другого типа???вдруг-не вдруг, причин может быть миллион, начиная от банальной ошибки кодирования и заканчивая уточнением знаний о предметной области. Не верю, что у тебя ни разу такого кейса не было.

P.S. Я, конечно, понимаю, что раз в Си нет перегрузки, то она никому не нужна ))) Просто поверь, что её наличие бывает удобным. Не будь ретроградом ;)
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39002283
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
alconПерегрузка процедур и функций. Зачем? что бы программист не гадал "как же они назвали это?", а программировал интуитивно, близко к языку (английскому, например).
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39002284
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
softwarerSelect ... ESelect ...FSelec вот вот.
А если программист не один, то скоро дойдём до XSelect_12_5
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39002291
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alconНе проще ли создать процедуру с новым именем и использовать ее в новых программах?

Приведите пожалуйста пример, в котором использование перегрузки, ну просто необходимо на 110%.

Все лингвистические извращения возможности программирования, начиная вообще от создания компиляторов, хотят одного: решить задачу, набирая поменьше символов, но получая бОльшую ясность и надежность.

Новые процедуры вида hire_emp_ex, hire_emp_new, hire_emp_from_date_income_and_salary_с_блекджеком_и_шлюхами могут затуманивать суть простейших алгоритмов и плодят сущности без необходимости. За такими маньяк Оккам с бритвой гонялся.
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39002560
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, далеко не всегда перегрузка нужна и полезна, я считаю.
Перегрузка даёт гибкость, но повышает неопределённость.
Там где это нужно, в языках типа С++, это полезно. Там существуют сотни или тысячи функций и процедур, так что
сочинять имена функций типа CreateAccountOnExistingUserWithoutAuthenticationAndSettingDefautProfile, да ещё так, чтобы не пересекалось с уже существующими функциями неинтересно.
Другое дело, например, Oracle PL/SQL. Там функции и процедуры крупные, их мало, и выдумать имя новой функции достаточно
просто. А недавно был случай, когда мне пришлось отказаться от перегрузки имени процедуры и сознательно изменить имя:
перегруженная процедура вызывалась из клиента, который не мог передавать параметры типизированными, и передавал их
в виде строк. А перегрузка была именно по типу параметров -- в одной процедуре параметры были строковые, в другой -- числовые.

Я был бы непротив, если бы перегрузки в PL/SQL не было бы.
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39002578
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivДругое дело, например, Oracle PL/SQL. Там функции и процедуры крупные, их мало, и выдумать имя новой функции достаточно просто.
Его выдумать всегда просто, но точно так же не всегда удобно. "Крупные, их мало" - говорит лишь о чьём-то стиле программирования. Я, например, в своё время возился с приложением на Cи, в котором типовая функция состояла из нескольких тысяч строк и размещалась каждая в одноимённом файле (то есть, соответственно, имя функции могло быть не больше восьми символов). Но мне было бы глупо на этом основании говорить, что в Си мало функций, они крупные и выступать за восьмисимвольное ограничение идентификаторов.

MasterZivА недавно был случай, когда мне пришлось отказаться от перегрузки имени процедуры и сознательно изменить имя: перегруженная процедура вызывалась из клиента, который не мог передавать параметры типизированными, и передавал их в виде строк. А перегрузка была именно по типу параметров -- в одной процедуре параметры были строковые, в другой -- числовые. Я был бы непротив, если бы перегрузки в PL/SQL не было бы.
Классический случай того, что я называю однозвенным мышлением. "Проблема в кривом клиенте - поэтому давайте изменим сервер".
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39002646
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
softwarerКлассический случай того, что я называю однозвенным мышлением. "Проблема в кривом клиенте - поэтому давайте изменим сервер". и придумали тип variant :)
...
Рейтинг: 0 / 0
Перегрузка процедур и функций. Зачем?
    #39002672
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychWhite OwlВо вторых, а зачем менять тип переменной? Предположим уже есть большой проект (достаточно большой чтоб рефакторинг был посложнее). И в этом проекте есть переменная одного типа и тебе ВДРУГ захотелось сделать ее другого типа???вдруг-не вдруг, причин может быть миллион, начиная от банальной ошибки кодирования и заканчивая уточнением знаний о предметной области. Не верю, что у тебя ни разу такого кейса не было.Не было, ни разу.
Ошибки кодирования обнаруживаются еще на этапе первой компиляции (кстати перегрузка функций спрячет эту ошибку и ты получишь уже неправильную логику работы).
Уточнение знаний о предметной области может заставить поменять очень много вещей внутри программы. Перегрузка функций на этом фоне сможет спасти только доли процента от общей работы.

egorychP.S. Я, конечно, понимаю, что раз в Си нет перегрузки, то она никому не нужна ))) Просто поверь, что её наличие бывает удобным. Не будь ретроградом ;)Я не спорю с тем что это бывает удобным. Но удобность и нужность это очень разные вещи.
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Перегрузка процедур и функций. Зачем?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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