命名成员函数/方法有一个下划线,好风格还是坏?

时间:2010-04-21 07:01:14

标签: function coding-style

在某些你无法覆盖()运算符的语言中,我看到了带有单个下划线的方法,通常用于“帮助”类。有点像这样:

class D10
{
   public function _()
   {
     return rand(1,10);
   }

}

使用名为Roll()的函数更好吗?下划线罚款吗?毕竟,只有一个函数,它不需要查找类的名称。

有什么想法吗?

5 个答案:

答案 0 :(得分:2)

我会说这是一种糟糕的风格。如果仅仅是下划线,则无法从函数名称推断出行为。

为了了解它的作用,您需要阅读代码或文档。

(另一方面,我认为D10不是一个好名字)。

答案 1 :(得分:1)

我想这是一个品味问题。但我不喜欢它。

我相信拥有完全不言​​自明的名字总是更好的做法。

只使用一次按键来调用你的功能,你不会节省太多时间,但你可能会花更多的时间记住它之后做的事情。

但同样,这是非常主观的。

答案 2 :(得分:0)

这可能是合法的,无论你和谁合作,都可能不介意(如果你是独自工作的话,更是如此),但如果是我,那会让我发疯。拼写D10.roll()并不占用你的大部分时间,而且由于名称不言自明,它使你的代码更容易理解。

然而,最重要的是,优雅在旁观者的眼中;如果每个正在编写代码的人都同意这是一个简单明了的标识符,那么没有人会阻止你。

答案 3 :(得分:0)

对我来说,这显然是不好的风格。

方法名称是名称,应该是描述性的。它们不是像人们对 * ,地点等那样的“专有名称”,它们是描述其中包含的代码所采取行动的名称。

* 虽然当然很多人的名字几乎都是字面上描述性的,但现在通常不是用法。

答案 4 :(得分:0)

我不认为结构是最佳的。我只想这样做:

class Dice
{
   public int D10()
   {
     return rand(1,10);
   }
   public int D6()
   {
     return rand(1,6);
   }
   // And so on...
}

然后我们会明确表示我们实际上是在这里骰子,我们不必为每个可能的骰子创建一个类。

如果你真的需要抽象出你正在使用的骰子,我希望你使用的语言将函数作为第一类对象来处理,在这种情况下你会这样做:

void RussianRoulette(SOMEFUNCTIONSIGNATURE dice)
{
   if (dice() == 1)
     print "BANG";
   else
     print "click";
}

RussionRoulette(Dice.D6);   // Regular russian roulette
RussionRoulette(Dice.D100); // For the faint of heart
RussionRoulette(Dice.D1);   // Die! :)