我为什么要重载一个程序?为什么不添加过程名?

时间:2013-11-28 09:04:10

标签: oop polymorphism overloading

我一直在重载程序已有一段时间了,但最近问自己,与仅仅添加名称略有不同的程序相比,实际的优势是什么。

基本上,我为什么要使用

Public Void DoSomething(Int FirstParam, String SecondParam)
Public Void DoSomething(String FirstParam, String SecondParam)

代替

Public Void DoSomething(Int FirstParam, String SecondParam)
Public Void DoSomething_V2(String FirstParam, String SecondParam)

如果有的话,一个不同的程序名实际上可能会让你更难以看到调用哪个程序。

2 个答案:

答案 0 :(得分:1)

那是因为你没有have to keep inventing the names。为了让其他人更容易识别它需要两个字符串,你必须命名相同的函数,如DoSomething_TwoStrings。

如果有另一个函数需要一个字符串和一个int,则必须将其命名为DoSomething_String_Int。

如果要更改元素的顺序并将其创建到另一个函数中,该怎么办?如果您选择将程序命名为V2和V1等,则会创建另一个层供用户记住。 V2作为输入是什么,以及V1怎么样。 This all creates hundreds of more names than a user really has to remember if you don't use overloading

Your program will also be clear due to having less vocabulary and smaller function names。一旦你知道IDE会清楚地给你所有重载的智能感知,并且你可以选择你想要的东西,那么使用重载是一件小事,而且不那么杂乱。

答案 1 :(得分:1)

你还记得,当你在几个月后编写代码时,DoSomething_V2是一个带有两个String参数的代码吗? V2是一个非常糟糕的名字。

现在,如果您问为什么不明智地命名,那么您就会从new File(...)转到File.getInstanceFromParentFileAndChildString(File parent, String child)File.getInstanceFromPathString(String path)File.getInstanceFromParentAndChildStrings(String parent, String child)File.getInstanceFromURI(URI uri)。< / p>

这就是目标C的方式,而新手对该语言的最大抱怨之一是其惊人的冗长。