0

我的问题考虑到了 Bash 和 PowerShell 脚本,但我想它也适用于其他语言。

据我了解,函数的目的是多次执行相同(或非常相似)的任务。这减少了脚本中的代码量,也使其更易于维护。

考虑到这一点,如果您发现您的脚本只调用一次函数,那么该函数没有理由作为函数存在。相反,您应该获取函数的代码并将其放置在调用该函数的位置。

说了这么多,这是我的问题:

如果我有一个复杂的脚本,我是否应该将每一段代码移动到它自己的函数中,即使每个函数只会被调用一次?这将大大增加脚本的可读性,因为它的逻辑(函数)都将位于脚本的顶部,而执行流程将位于脚本的底部。由于 50 行代码仅由 1 行表示,因此更容易理解脚本在做什么。

其他人会这样做吗?这种方法有缺点吗?

4

7 回答 7

1

代码可读性确实是一个主要问题,通常(现在)比纯粹的代码量或性能更重要。更不用说内联函数调用不一定具有明显的性能优势(非常特定于语言)。

如此多的开发人员(我敢说最好的品种 :-) 像你描述的那样创建小函数/方法,将他们的代码划分为逻辑内聚的部分。

于 2011-01-06T17:33:43.713 回答
1

拥有函数也增加了可读性。因此,如果 bash 脚本显示为:

getParams()

startTask()

doSomethingElse()

finishTask()

# implement functions below

即使函数实现很简单,它也读起来更好。

于 2011-01-06T17:33:59.897 回答
0

函数执行定义明确的任务。如果你有一个能做 5 个不同事情的超级函数,它强烈建议它应该调用 5 个更小的函数。

于 2011-01-06T17:33:01.623 回答
0

据我了解,函数的目的是多次执行相同(或非常相似)的任务。

好吧,我的理解是,函数是执行特定的、明确定义的任务的离散实体。

考虑到这一点,如果您发现您的脚本至少调用了一次给定的函数,那么它正在完成它的工作。

于 2011-01-06T17:33:35.870 回答
0

读这本书

http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

以下是书中的一些引文。

“小!函数的第一条规则是它们应该很小。函数的第二条规则是它们应该比那个小。”

“职能应该做一件事。他们应该做得很好。他们应该只做。”

于 2011-01-06T17:36:46.713 回答
0

专注于能够阅读并轻松理解您的代码。

拥有清晰易读的代码肯定比害怕函数调用开销更大。这只是一个过早的优化。

另外,函数的目标是完成特定任务。一个任务可以是一个子任务,这没有错!

于 2011-01-06T17:37:52.610 回答
0

据我所知,一个函数代表一个步骤序列,这些步骤成为更大程序的一部分。谈到你的问题,我强烈同意函数可以提高可读性和可重用性。但与此同时,将每件事都分解成碎片可能不是一个好习惯。最后,我想说一句:“任何过量都无益!”

于 2011-01-06T17:49:54.790 回答