使用实用程序类存储对象是一种好习惯吗? [关闭]

问题描述 投票:-1回答:1

这主要是编码风格的问题。我想知道从实用程序类存储和获取对象是否是一个很好的编码原则?

例如,假设我创建了一个整数列表,我希望其他类使用该列表。但是,为了做到这一点,每次我想使用/编辑列表时,我都必须在每个类中传递列表。而不是这样做,创建一个实用程序类是一个很好的做法,每次我想使用它时都会“获取”这个列表吗?

使用实用程序类可以清理我的代码。但是,我听说甚至使用实用程序类被认为是一种不好的做法。谢谢!

public class ThisExample {

    private static final List<Integer> thisList = new ArrayList<Integer>();

    public static List<Integer> getMoveHistory() {
        return thisList;
    }
}
java class object utility
1个回答
2
投票

我建议用优点和缺点查看你的问题,而不是最佳实践,因为后者是一个意见问题。

使用全球容器的优点:

  • 易于访问全局变量 - 将导入容器的每个类都将能够访问全局数据。
  • 共享变量的集中化 - 查找特定的全局变量很容易,假设所有变量都存储在同一个容器类中。
  • 文档 - 将所有全局变量存储在一个类中有助于记录全局变量的上下文和目的 - 只需按上下文对它们进行分组,并添加注释,说明它们在应用程序中的作用。
  • 简单性 - 对于较小的代码库/应用程序,使用单线程方法和少量类和代码流,使用全局变量容器可以是在实体之间传递信息的简单直接的解决方案。

使用全局容器的缺点:

  • 类耦合 - 所有将使用全局变量的类都必须导入相同的Container类,这将导致许多其他类对容器类的依赖。现在,容器类的更改将同时影响许多其他类。
  • 单点故障 - 许多应用程序代码流将传递抛出容器类。由于例如性能考虑,这使得某些方法(例如使用同步锁)在容器类上使用是不切实际的。
  • 调试困难 - 由于应用程序的许多元素将不可避免地访问全局变量,因此调试其内容可能更加困难,尤其是在多线程解决方案中。
  • 面向对象的反模式 - 如果OO方法专注于代码的封装和解决方案的抽象,那么全局容器就是完全相反的 - 共享代码,它完全专注于实现(例如,当使用DS全局变量时)。
  • 始终在内存中 - 只要应用程序运行,Global容器的变量就会在范围内。许多内存泄漏是遗忘的范围内变量的结果。

参考文献:

© www.soinside.com 2019 - 2024. All rights reserved.