gpt4 book ai didi

java - 单参数方法命名: repeat paramter in method name

转载 作者:行者123 更新时间:2023-12-02 04:30:57 25 4
gpt4 key购买 nike

有时我们需要创建只有一个参数的简单方法。例如:

private boolean isMockedPlayer(Player player) {
return player == Player.MOCKED;
}

所以,我的问题是:命名方法不是更好吗:isMocked(玩家玩家)而不是多次重复“玩家”这个词?有官方指导吗?我意识到这种重复对于设置者来说是必要的,但对于上面的其他情况则不确定。

编辑:嗯,例子可能不是最好的。但问题不在于这段代码,而在于一般原则——我们是否应该在方法名中重复参数类型?

最佳答案

为什么不将其放在 Player 实例本身上?

public boolean isMocked() {
return this == Player.MOCKED;
}

player.isMocked() 看起来比 someOtherService.isMockedPlayer(player) 更自然。

如果Player是一个enum,它确实有点违背了目的,因为MOCKED是公开的。

另一方面,如果 Player 是一个实际的类,并且 MOCKED 是您维护的内部静态实例,那么您可以实现 isMocked() 如上所述,您甚至不必向外界公开 MOCKED

but about general principle - should we repeat parameter type in method name or not?

嗯,这要看情况。选择至少以下的命名约定:

  • 自然
  • 不足为奇
  • 不困惑
  • 尽可能简洁

您希望清楚地传达您正在执行的操作的上下文和含义。

我认为您的示例本身有点多余,因为您正在检查实例的状态。因此,在这种情况下,该方法成为实例本身的一部分更有意义。但更好的例子可能是类上的方法,它接受与类本身类型相同的参数。例如:

public void merge(BinarySearchTree tree) {
...
}

在这种情况下,不需要调用方法mergeBinarySearchTreebst.mergeBinarySearchTree(other) 并不比 bst.merge(other) 传达更多信息。但即便如此,您也不能将其用作硬性规定。也许您的对象有许多不同类型的合并操作,它们都接受不同的内容。在这种情况下,让方法包含要合并的事物的名称可能是有意义的...但这也可能取决于您如何设计对象模型。

tl;博士这取决于;但一般来说,选择一个能够传达有关操作的语义和上下文的准确信息的名称,而不是不必要的冗余或冗长。

关于java - 单参数方法命名: repeat paramter in method name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31485353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com