我一直在重载程序已有一段时间了,但最近问自己,与仅仅添加名称略有不同的程序相比,实际的优势是什么。
基本上,我为什么要使用
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)
如果有的话,一个不同的程序名实际上可能会让你更难以看到调用哪个程序。
答案 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的方式,而新手对该语言的最大抱怨之一是其惊人的冗长。