Зачем перегружать функцию меньшим / большим количеством аргументов? - PullRequest
1 голос
/ 11 октября 2010

Итак, я программист на Java и знаю, что означает перегрузка функции. Более того, я перегружал функцию аргументами другого типа и могу перегружать меньшим или большим количеством аргументов.

Меня спросили об этом на собеседовании. Я действительно не знаю, имеет ли это какие-либо преимущества или что интервьюер получал здесь. Есть ли у нее какие-либо преимущества в производительности? Есть мысли?

Спасибо.

Ответы [ 6 ]

6 голосов
/ 11 октября 2010

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

5 голосов
/ 11 октября 2010

Я использовал это для обеспечения обратной совместимости раньше.

1 голос
/ 11 октября 2010

его для обеспечения гибкости, например,

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

, например

public void connectToDatabase (string connString) {// некоторые команды}

public void connectToDatabase (строка connString, строка username, строковый пароль) {// некоторые команды}

0 голосов
/ 12 октября 2010

Если язык не поддерживает перегрузку, то выполнение выполняется быстрее.Поскольку программе не придется использовать / отслеживать / управлять механизмом перегрузки.

Но если язык поддерживает перегрузку, вы должны ИСПОЛЬЗОВАТЬ их!Вот причины в смысле производительности:

  1. Передача параметров является дорогостоящей.Потому что им нужны пространства памяти и доступ к ним.Таким образом, если вы отправите 2 параметра того же типа данных, это будет практически медленнее, чем если бы вы могли передать 1 параметр.

  2. Для различных параметров у вас нет выхода.

  3. Поскольку вам, по крайней мере, придется сделать функцию для самого длинного списка параметров,вам нужно будет проверить множество нулевых / пустых значений и иметь зависящие от них условия для реализации алгоритма для меньшего количества или разных аргументов.

  4. Есть некоторые аргументы, которые на самом деле являются атрибутами другихаргументы.Вы можете отправить их в массив или ссылку на массив.Например, вы можете напечатать что-нибудь, и у вас могут быть некоторые аргументы, такие как цвет, граница и т. Д., Которые являются общими для них.Вам действительно не нужно указывать для них отдельные параметры.

  5. Вы также должны посчитать, сколько раз используется каждая версия.Вы можете объединить те, которые могут иметь более низкие частоты.Не трогай самых занятых!

    Так много практических теорий;)

0 голосов
/ 11 октября 2010

Определенно для обратной совместимости.Также, если немногие параметры передаются очень редко (более 2) со значениями не по умолчанию, полезно создавать перегруженные методы.

0 голосов
/ 11 октября 2010

Интервьюер, возможно, намекал на внедрение зависимостей, что можно сделать с помощью методов или конструкторов.

...