java – 如何命名一个参数副本的变量?

前端之家收集整理的这篇文章主要介绍了java – 如何命名一个参数副本的变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个方法来处理Collection< Nodes>作为参数传入.此集合将被修改,因此,我认为首先制作一个副本是很好的.我如何命名参数和局部变量,例如节点在下面的例子中?
List<Nodes> process(Collection<Nodes> nodes) {
  List<Nodes> nodes2 = new ArrayList<>(nodes);
  ...
}

另一个例子考虑以下变量是从String参数解析的int:

public void processUser(final String userId) {
  final int userId2 = Integer.parseInt(userId);
  ...

解决方法

名称变量问题的一个很好的方法是使用提示变量实际含义的名称.在您的示例中,您使用的名称不会对方法功能或变量的含义产生任何影响,因此很难选择名称.

在JDK中有很多例如你的例子. Arrays#copyOf

public static <T,U> T[] copyOf(U[] original,int newLength,Class<? extends T[]> newType) {
    @SuppressWarnings("unchecked")
    T[] copy = ((Object)newType == (Object)Object[].class)
        ? (T[]) new Object[newLength]
        : (T[]) Array.newInstance(newType.getComponentType(),newLength);
    System.arraycopy(original,copy,Math.min(original.length,newLength));
    return copy;
}

在这种情况下,它们调用参数original和本地变量副本,完全表示返回值是参数的副本.准确地说,复制是这种方法所做的,因此被命名.

使用与您的情况相同的推理(请考虑重构为您的方法和变量提供更有意义的名称)我将命名您的本地的节点类似processedNodes,以表达该变量是什么,并与您的方法名称一致.

编辑:

您在编辑中添加的新方法名称不会提供有关其操作的提示.我会假设它修改通过参数传递id的用户的某些属性(可能在数据库中).

如果是这样的情况(或类似的),我认为适当的方法
可以申请的是,每种方法都应该有一个责任.根据你的方法的名字,它应该处理用户,因为你需要一个int userId.解析String userId的责任应该超出此方法的范围.

使用所提出的方法具有以下优点:

>如果您必须向输入添加其他验证,则您的课程将不会更改.>您的课程不负责处理NumberFormatException,这必须是应用程序的责任.>如果必须处理不同类型的输入(例如float userId),您的processUser方法将不会改变.

猜你在找的Java相关文章