班级成员组织

时间:2008-10-11 20:05:25

标签: language-agnostic coding-style class

对班级成员进行排序的最佳方法是什么?

我与团队成员发生冲突。他建议我们按字母顺序对成员进行排序。我认为最好以语义方式进行组织:首先是重要的属性,要么是相关的方法等等。

您怎么看?

10 个答案:

答案 0 :(得分:11)

我喜欢语义。按字母顺序对我来说似乎没有多大意义,因为当你正在寻找一个成员时,你很少知道它究竟叫什么。此外,如果您使用任何类型的命名约定(例如:匈牙利语),按字母顺序将导致按类型分组,这可能不是您想要的。

答案 1 :(得分:3)

将相关的班级成员组合在一起。我认为这将有助于其他程序员在第一次看到它时更容易理解您的界面。

有些人还发现在不同的部分组织访问者和修饰符很有帮助。

答案 2 :(得分:2)

我已经将这个问题作为硕士论文的一部分进行了研究。

基于公共/私人的字母组织或组织更能够找到特定的东西。但是,在某些IDE中,您可以将大纲工具设置为按字母顺序排序,并为公共/私人使用特殊指标。

我的方法是根据用户使用的成员对方法进行分组:使用相同字段的方法之间通常存在概念上的联系。

我实际上从中创建了一个可视化,这有助于快速导航和理解大类的结构。

答案 3 :(得分:1)

这只是我的观点,我肯定会不受欢迎,但语义排序的问题是它的主观性。每个人对于哪些方法应该在一起时会有不同的看法。

按字母顺序排列的优势在于它完全是客观的。它还减少了小变化的大差异,这在一个编码器选择不同的语义顺序时很常见。

大多数IDE都有轮廓或超链接,以便于导航。

编辑:澄清 - 我仍然首先将公开排序为私有,但在同一访问级别内按字母排序。事实上,我没有做任何排序 - 我让我的IDE在保存时为我提供文件。

答案 4 :(得分:1)

我从不通过代码查找成员。当我想跳转到成员定义时,我要么从导航栏/文档大纲/类视图中选择它,要么我右键单击并选择“跳转到定义”。如果你有一个像样的IDE,你不需要对成员进行排序。这在Visual Studio和我使用的其他IDE中非常有用,如果需要的话,KDevelop至少支持它的基础知识。

无论如何,我倾向于按功能对成员进行分组,即属于某些特定功能的所有字段/属性/方法都在一起。因为课程不应该太长,这就足够了。

答案 5 :(得分:0)

你在写电话簿吗?

使用语义方法,您可以轻松地显示哪些是最重要的方法。 我通常首先使用Constructor,Destructor,然后使用重要的方法,然后是getter和setter,最后是misc。方法。最后,我对内部部件采取了类似的方法(私有方法,属性......)。

字母顺序不会传达有关您班级的任何有用信息。如果您真的想要按字母顺序查看方法,则应该依赖IDE的功能。

答案 6 :(得分:0)

您可以通过对IDE中的“方法显示”进行排序来从语义转换为字母。

你不能(自动地)从字母到语义。

因此:语义。

答案 7 :(得分:0)

假设您使用的是现代IDE,找到您想要的方法很少需要两次点击鼠标,因此我不确定采用特定的方法来组织您的方法会得到什么。我使用stylecop(http://code.msdn.microsoft.com/sourceanalysis),它让我通过public / private / method / properties进行排序 - 我发现它足够肛门。

我唯一真正认为这很重要的是当我写了一个非常大的jscript程序时,编辑器当时没有提供任何查找功能的帮助。字母组织非常有帮助。进行alphabatized时,不难找出文件中哪个方法需要去查找方法。语义组织本来就没有用。

答案 8 :(得分:0)

在更高的层次上,我会以这种方式组织我的课程:

  1. 构造函数
  2. 析构
  3. 私人领域
  4. 属性
  5. 方法/函数
  6. 然后对于方法/功能,我会通过功能将其分解。例如我会将实现接口的方法放在一个区域中,我会将事件处理程序方法放在一个区域中,等等......

    RWendi

答案 9 :(得分:0)

我想我是支持字母列表的古怪案例之一。

首先,根据我的经验,将语法分组在一起的方法往往是一个时间接收器。现在,如果我们谈论按范围/可见性对它们进行分组,这是另一回事。但是,如果成员更改了它的范围,则必须花时间移动成员以保持代码最新。我不想浪费时间来改变代码,以遵守这样的指导原则。

我也不是地区的忠实粉丝。当属性和方法按范围分组时,它们倾向于喊出区域中的封闭。但是在崩溃区域中包含代码往往会隐藏严重编写的代码。只要您不必查看它,您就不会考虑重构它以使其可维护。

所以,我赞成按字母顺序组织。这很简单,直接,而且非常重要。我不想将团体封入地区。而且由于IDE无论如何都很容易实现功能或属性定义,因此代码的物理布局没有实际意义。 使用是您希望人们首先关注您的公共成员。现代IDE在很大程度上支持基于范围的布局,这在很大程度上是毫无意义的。

但字母布局的最大优点是:在代码审查期间打印代码示例。我使用它们很多。它使得查找函数或属性变得轻而易举。如果您不必通过大量代码来查找函数或属性,而不是按字母顺序排列,那么您就会知道我在说什么。

但是,正如他们所说,那些是关于这个主题的我的主观观点。您的里程可能会有所不同。

相关问题