在某些你无法覆盖()运算符的语言中,我看到了带有单个下划线的方法,通常用于“帮助”类。有点像这样:
class D10
{
public function _()
{
return rand(1,10);
}
}
使用名为Roll()的函数更好吗?下划线罚款吗?毕竟,只有一个函数,它不需要查找类的名称。
有什么想法吗?
答案 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! :)