当前位置: 首页 > 知识库问答 >
问题:

Java私有方法参数最佳实践

高钱青
2023-03-14
public boolean validate(Map<String, String> content) {
    method1(content);
    method2(content);
}

private boolean method1(Map<String, String> content) {
    // Use of content
}

private boolean method2(Map<String, String> content) {
    // Another use of content
}

private Map<String, String> content;

public boolean validate(Map<String, String> content) {
    this.content = content;
    method1();
    method2();
}

private boolean method1() {
    // Use of content
}

private boolean method2() {
    // Another use of content
}

也许在这个简单的例子中,它是一样的,但是如果我有10个私有方法,所有的方法都处理10个属性,那么让所有这些方法都有10个参数,这看起来就更难以理解了。

共有1个答案

周阳波
2023-03-14

如果从多个线程中使用验证器,则在实例变量中设置内容不是线程安全的。

例如:

// Thread 1
validator.validate(a)
thread 1 calls validator.method1() using this.content=a

// Thread 2
validator.validate(b)

// Thread 1
thread 1 calls validator.method2(), using this.content=b

如果您重复将同一组局部变量传递给一组方法,您可能会考虑“引入参数对象”重构。参见https://blog.novoda.com/refactoring-indrode-parameter-object或https://www.jetbrains.com/help/idea/2021.1/extract-into-class-refactorings.html#extract_parameter_object

 类似资料:
  • 问题内容: 我正在尝试使用Java中的分数。 我想实现算术函数。为此,我首先需要一种将功能标准化的方法。我知道我只有一个公分母才能将1/6和1/2加起来。我将不得不添加1/6和3/6。天真的方法会让我加2/12和6/12,然后减少。如何以最少的性能损失获得一个共同的分母?哪种算法最适合呢? 版本8(感谢hstoerr): 改进包括: 现在equals()方法与compareTo()方法一致 问题答

  • 我有几个不同的路由,但包含相似的参数。 示例: 请注意,所有三个视图都使用相同的图表控制器来控制视图。这是一个相当通用的控制器,但它需要在可用的图表类型之间切换。。。同时保持路线的其余部分<示例:(这不起作用) 有人知道如何在不完全重新键入或重建路由路径的情况下轻松更新路由参数吗?

  • 问题内容: 下面的代码之间有什么区别?将参数声明为是有什么好处? 问题答案: 由于形式方法的参数是局部变量,因此只有在内部匿名类被声明为final的情况下,您才能从内部匿名类访问它们。 这使您不必在方法主体中声明另一个局部最终变量:

  • 本文向大家介绍ThreadPoolExecutor 创建方法最佳实践?相关面试题,主要包含被问及ThreadPoolExecutor 创建方法最佳实践?时的应答技巧和注意事项,需要的朋友参考一下 在《阿里巴巴 Java 开发手册》“并发处理”这一章节,明确指出线程资源必须通过线程池提供,不允许在应用中自行显示创建线程。 为什么呢? 使用线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源开

  • 好的,所以我找不到关于这个主题的任何有用的材料,我找到的一大块文章中有一个方法是用@HystrixCommand注释的,并且定义了一个回退方法。 我找到的另一个解决方案是使用@DefaultProperties(defaultFallback=“fallbackMethod”),但问题是这些方法需要具有兼容的返回类型。 不幸的是,在我的服务中,我有许多具有完全不同签名的方法,我还需要掌握可抛出的方

  • 问题内容: 将私有方法定型是否有好处?这样会提高性能吗? 我认为“私有最终”没有多大意义,因为私有方法不能被覆盖。因此,方法查找应该像使用final时一样高效。 (如果可能)将私有助手方法设为静态会更好吗? 最好使用什么? 问题答案: 添加方法不会提高Sun HotSpot的性能。HotSpot会在可能添加的地方注意到该方法永远不会被覆盖,因此请一视同仁。 在Java中,方法是非虚拟的。您不能覆盖