3

我对你们在包含大量函数时如何布置 Javascript 对象/类很感兴趣,所有这些函数都需要处于相同的“级别”(即它们需要保留为对象的第一级函数)。

所以有了这样的结构......

Namespace.class = {
    abc: 1,
    def: 2,
    ghi: 3,

    funcA: function(){
       // Some logic
    },

    funcB: function(){
       // Some logic
    },

    // Lots more functions

    funcN: function(){
       // Some logic
    }  
}

这一切都会变得非常笨拙。您如何布置这些类型的对象以使它们易于阅读、易于维护并且新开发人员可以快速上手?

我的方法是按字母顺序组织所有内容,因此如果您知道函数的名称,您大致知道该去哪里。

但是,将功能密切相关的功能和相互引用的功能进行分组是否更有意义?

4

3 回答 3

3

这里有很多方法,这取决于您与代码交互的方式。

需要记住的一些事项:

1)如果代码笨拙,重构可能过期了。

考虑将你的班级分成更小的班级,每个班级处理大班所做工作的不同方面。如果您使用静态函数而不是类,则在多个命名空间中拆分功能。

考虑将功能拆分到多个文件(例如每个文件一个类),并使用一个构建过程来组合和缩小您的输出。

2)工具可以提供帮助。

如果您处理大型代码库,那么找到一个可以帮助您处理它的编辑器(或学习更好地使用它的功能)可能是一个好主意。您的 IDE 可能会有一些功能来帮助您更好地浏览文件结构,例如文件结构概述、代码区域或对象视图

3)按有意义的方式组织功能。

在某些情况下,字母解决方案可能有意义,但按功能分组可能更好。将导出的方法全部放在一个地方可能也是一个好主意:

Namespace = function() {
  var f1 = function() { };
  var f2 = function() { }; // this is internal

  // Exported methods
  return {
    f1 : f1
  }
}();

4) 记录您的代码。

虽然阅读代码对于让某人深入理解非常宝贵,但代码文档化对于获得第一眼的理解至关重要。它在开发过程中对您也很有用,因为您不必记住代码的所有怪癖。

5) 实施一种可以帮助你的编码风格。

您的编码风格可以帮助您更轻松地在代码中查找内容。如果您总是使用相同的间距,以相同的方式放置大括号等,则查找函数定义可以像Ctrl-f: myFunc:.

于 2013-11-13T14:34:36.133 回答
1

一种方法是将类模块化,并将其拆分到多个文件中。通常,这种方法用于为核心类提供插件。jQuery 是使用插件扩展类的一个很好的例子。

当您对将同一个类拆分到多个文件不感兴趣时​​,我发现按字母顺序排列函数顺序会有所帮助。

最后,只要您有一个足够好的 IDE,它可以让您跳转到该函数的定义,函数的顺序就无关紧要了。

于 2013-11-13T14:31:58.290 回答
0

上帝对象是一种反模式,并且可以很好地表明您存在一些严重的设计缺陷。

如果您遵循单一职责原则并拥有一个支持智能感知和其他类似功能的智能 IDE,那么尝试保持一切有序的投资是不值得且没有必要的,因为 IDE 的工作是在面板中显示所有排序的函数定义快速访问并获得全球概览。

如果你真的想订购你的函数,你可以有一个自动化的过程来保持你的对象文字结构化。

但是,这并不意味着您不应该有任何编码标准。我仍然以一种有意义的方式组织我的代码,例如私有/公共/特权成员在一起。

于 2013-11-13T14:43:45.700 回答