language-agnostic - 函数重载的用途/优点是什么?

标签 language-agnostic oop overloading

函数重载的用途/优点是什么?

最佳答案

IMO,主要好处是在逻辑上执行非常相似的任务的方法/函数命名的一致性,并且通过接受不同的参数而略有不同。这允许在多个实现中重用相同的方法名称。

例如重载:(好)

function Person[] FindPersons(string nameOfPerson) { ... }
function Person[] FindPersons(date dateOfBirth) { ... }
function Person[] FindPersons(int age, string dogsName) { ... }

比“唯一命名”函数更可取:(更糟)
function Person[] FindPersonsByName(string nameOfPerson) { ... }
function Person[] FindPersonsByDOB(date dateOfBirth) { ... }
function Person[] FindPersonsByAgeAndDogsName(int age, string dogsName) { ... }

通过这种方式,编写调用/使用这些函数的客户端的编码人员可以在更高层次的概念思维(“我需要找到一个人”)上进行操作,并且不需要记住/定位一个人为的函数名称。

对于静态类型,编译器将根据使用参数匹配适用的重载。对于动态类型,同样的匹配会在运行时发生,如果没有找到合适的匹配,可能会导致失败。

关于language-agnostic - 函数重载的用途/优点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3343913/

相关文章:

java - 对象/实例问题?

javascript - 比较JS创建对象的方式

language-agnostic - 向独立开发商支付游戏费用的地方?

language-agnostic - 您的避免关键字命名冲突的系统是什么?

language-agnostic - ICalendar 和事件更新在 Outlook 中不起作用

php - 我可以在 PHP 中重载方法吗?

c# - 具有字符串参数的构造函数和具有对象参数的相同重载

regex - 有没有办法在 Perl 中重载正则表达式绑定(bind)运算符 `=~`?

c++ - 我应该专门化或重载在 `std::swap` 之类的命名空间中定义的模板吗?

language-agnostic - 扔还是不扔