函数的第二部分是函数名。函数名遵循和变量命名的相同规则。大多数库函数都以小写字母开头,尽管这不是一个语言的要求。就笔者而言,更倾向于用大写字母开头,至少,我们能知道是自己编写的函数。同样,这不是一个命名规则,只是笔者倾向于遵循的一种风格惯例。那样,如果代码中有些地方工作不正常,我们看到一个大写函数,就能知道这是自己写的代码中可能包含错误(公共库函数中存在错误的可能性非常小)。
函数名的选择很重要。好的函数名告诉你函数的功能,但不一定告诉你,它是如何实现的。例如,假设你需要搜索数据列表以查找特定值。有许多不同的方法来组织和搜索数据列表(例如,按升序排序、创建二叉树、使用哈希代码等)。你可以对数据进行排序,然后使用二进制搜索算法搜索列表。你可以将函数命名为DoBinarySearch()。你知道如何使用哈希代码,并且你发现哈希算法将显著提高程序的性能。编写函数并将其命名为DoHashSearch()。现在,你必须返回源代码并将DoBinarySearch()的所有实例更改为DoHashSearch()。的确,你可以更改DoBinarySearch()中的代码来实现哈希代码算法,但这似乎有点欺骗性。此外,如果其他人必须查看你的代码,他们阅读代码时希望找到一个二进制搜索算法,结果会因为阅读的是哈希代码算法而挠头。
函数的更好名称是FindListItem()。它之所以是一个更好的名称,是因为它告诉函数的用户,函数做了什么,而不是它是如何完成的。如果你决定在以后的某个时间实现不同的算法,那么你可以问心无愧地这样做,因为函数名字并没有说明事情是怎么做的。函数应该是一个黑匣子,因为它告诉你它做什么,但不提供关于其实现的详细信息。(www.xing528.com)
有些人会说:“但是主要的语言和编译器供应商确实有名为ShellSort()、QuickSort()和其他特定于算法的名称。”没错,但你希望函数是完成特定任务的,而不是特定算法的。如果你使用的语言为你提供了选择,但是,笔者仍然会编写自己的函数,如:
在本例中,你已经将如何进行排序的详细信息包装在一个函数中,该函数说明了要执行的操作。如果以后你觉得其他算法工作得更好,那么很容易进行更改。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。