2

我需要为处理“值数组”的例程找到一个好的且易于理解的命名方案(我valarray在 Java 中编写了类似于 C++ 的东西,并考虑了对原始类型的一些优化)

我知道例程的主要分类是:

  • 函数(它们可能带有参数并且必须返回一些东西)
  • 方法(它们可能接受参数并且不返回任何内容)

出于性能原因,我不仅允许将威胁其参数的函数/方法定义为只读,还允许将可能修改其第一个参数的函数/方法定义为。

这样一个人不仅可以做到这一点......:

ValArrayInt a=..., b=...;
// "apply" treats "a" and "b" as readonly
ValArrayInt temp = ValArrays.apply(adder, a, b); // temp = a + b
a = temp;

......还有这个:

ValArrayInt a=..., b=...;
// "apply" modifies "a"
a.apply(adder, b); // a += b

请为这些类型的例程建议一个命名方案:

  • 将所有参数视为只读的函数
  • 可能修改其第一个参数的函数
  • 将所有参数视为只读的方法
  • 可能修改其第一个参数的方法

我想过像 ModifyingMethod、NonModifyingMethod 或类似的东西,但我认为这些名称不够简单,而且太长。

4

3 回答 3

1

我总是在方法名称中使用“更新”一词来表示将更新一个或多个参数。例如:

updateClaimWithPolicyDetails(Claim c, PolicyCriteria pc, String identifier)

您可以合理地推断此方法可能会更新 Claim 对象。然后,如果用户想了解更多信息,他可以深入研究 javadoc

对于返回某些内容并更新参数的函数,可以使用诸如“updateAndGet”之类的东西。

public Policy updateClaimAndGetPolicy(Claim c, PolicyCriteria pc, String identifier) 

由此您可以推断出一个人正在更新索赔并返回保单(索赔可能已经针对保单进行了更新)。

如果方法中没有使用 updateXXX 这个词,那么您应该假设所有参数都是只读的。如果您有两个可更新的参数,那么您可以说

updateClaimAndPolicyCriteria(Claim C, PolicyCriteria pc, String junkParam)

以上可以告诉您索赔和政策标准都将更新。

于 2010-02-19T14:49:45.420 回答
0

将此信息编码为方法名称可能很复杂。

另一方面,通过明确说明方法的副作用,该信息必须存在于方法的文档中(例如在 Javadoc 中)。

于 2010-02-15T21:29:14.713 回答
0

我喜欢上述预先更新或修改的答案。但是,这实际上应该是文档的功能,用于描述调用函数的作用以及它如何影响参数。但是,通常您不想修改传递给函数的参数,认为在某些情况下(如 Collections.sort)您希望这样做以防止复制。此外,请确保在适当的情况下使用不可变对象,而不是总是使用带有所有公共 getter 和 setter 的愚蠢的 java bean 类。

于 2010-02-19T14:58:46.777 回答