简短的功能应该是功能吗?

时间:2015-12-30 18:22:37

标签: encapsulation

让我们来看看这个JavaScript函数:

function setDivId(div, id) {
        div.id = id;
        return div;
    }
  • 通过封装这么短的内容,我会失去任何表现吗?
  • 在正确的语境中将 div.id = something; 写成一行会更好吗?
  • 如果较小的低级函数(组成较大的函数)不太可能再次使用,是否有任何封装函数的点?
  • 是否应该封装功能?什么是不应该分解函数的例子(如果可以的话)?

1 个答案:

答案 0 :(得分:0)

根据您的问题,我认为存在对封装的误解。封装是指限制应用程序中的组件(类,变量等)。这是一个高级示例:名为ClassOne的类将无法访问名为ClassTwo的类中的私有变量,因为该变量已标记为私有且只能由ClassOne访问。您可以阅读有关封装here的更多信息。

您实际使用该功能正在尝试让程序员更轻松,更方便地设置给定div的{​​{1}}属性。从技术上讲,函数确实会影响性能,但在大多数编译语言中,编译器使用inlining来否定性能影响。您不应该关注创建函数的性能影响,因为它们可以忽略不计。您应该问自己该功能是否必要,减少冗余并缩短开发时间。

解决您的问题:

  • 不,该功能基本上不会影响性能。
  • 你最好这样做,因为这是一个简单的单线作业。通过编写该功能,您无需随时保存自己或使您的代码更简洁。
  • 有时为了代码清晰度而编写函数可能很有用。但是,如果函数中的代码仅使用一次且与问题中的代码一样短,则创建函数没有多大意义。如果一个短函数比你的例子长几行并且在一个更大的函数中被多次使用,那么将代码放在一个函数中是有意义的,即使它没有在该函数以外的任何地方使用。为什么?它减少了代码冗余。
  • 该术语性质的功能不属于对象,也不是封装的。属于对象的函数(通常为id)称为Class。是的,您应该封装方法,因为它们只能由它们所属的对象访问。