在javascript中使函数变小是否更好?

时间:2010-03-16 01:47:34

标签: javascript function

最近我读了一本书(CleanCode

在本书中,

  

功能应该做一件事。他们   应该做得好。他们应该这样做   ONLY。

     

并且功能应该很小。

但我认为javascript中的功能。

如果我将大功能拆分为小东西,代码会变得越来越长,渲染需要更多时间。

即使在javascript中使函数变小也更好吗?

你有什么看法

7 个答案:

答案 0 :(得分:7)

微观优化是不值得的。可维护性更重要。要将代码实际提供给浏览器,您可以使用JavaScript minifier

答案 1 :(得分:4)

一般来说,您应该始终努力使您的功能小巧简洁。不是出于性能原因,这可以忽略不计,而是为了使您的代码清晰,可读和可维护。

答案 2 :(得分:3)

这本书完全正确。

功能应该尽可能简单。这应该是一种习惯。也许对于一个非常简单的网页,您不会发现任何差异,但随着您继续开发越来越复杂的系统,您会发现通过简化函数可以避免一堆不必要的错误。

使用单独的功能查找问题要容易得多,每个功能执行一项易于衡量的单一任务。作为奖励,您会发现重用部分代码并防止重复更容易。每个功能只应编码一次,否则当您需要更改某些内容的计算方式时,例如,您必须搜索代码才能找到需要更改的所有位置。

与代码的可维护性相比,渲染时间(或更确切地说是下载时间)差异无关紧要。

答案 3 :(得分:2)

我不相信咒语“功能应该很小,只做一件事,一件事”。我认为在程序语言编程时代就是这样,而且很多大肆宣传的OO传教士都陷入困境之中。为什么?因为在这些语言中,您无法使用内联或匿名函数。这些早期过程语言中可读性的路径是简短,命名良好的函数,因为这样您就可以使代码更加语义。在那些日子里,代码通常更短,支持库和组件更少。构建调试周期的迭代时间是几分钟 - 今天,我想很多人会觉得这是不可接受的。

如今,可维护性的主要敌人无法破译程序的流程。如果您不知道编码的内容或位置,或者它来自何处,或者您要调用的内容的名称是什么 - 您在短时间内就会遇到噩梦。拥有(1)一个易于思考的简单,无污染的命名空间,以及(2)使一段代码非常接近其影响的其他代码将使您在可维护性方面获得更多的里程数前面比“很多小的单一用途功能”的东西。

答案 4 :(得分:1)

除非你正在编写一个非常重要的时间部分,否则通常“易于维护”(在你的情况下意味着小功能)远比代码大小重要。

你应该首先编写小函数,然后优化(通过合并或重写)那些你认为太慢的函数。

答案 5 :(得分:1)

这条线在Javascript中有点模糊,因为functions是类,对象,构造函数和闭包的两倍。你的最外面的函数可能是巨大的,但只是因为它命名为其他大函数,它们充当包含更多包含闭包的回调的对象/构造函数。

尽管如此,在任何情况下和任何语言中,函数(功能自包含代码块)应尽可能精确的规则都适用。

答案 6 :(得分:1)

  

如果我将大功能拆分为小   事情,......

它没有说“做小事”,它说“只做一件事”和“小功能”。

这并不意味着单行,做“一件好事”,它可以很容易地成为10-50行,仍然是简洁和“一件事”。