我正在设计一个应用程序,我必须在其中读取用户提供的一个文件并计算操作总数。我有两种方法可以实现这一目标:
创建包含总操作的静态变量。这种方法的好处是,在任何需要根据总操作执行一些计算的地方,我都不需要一次又一次地调用函数,它将从文件中读取所有记录并计算操作数。
创建通过循环文件返回操作数的函数。
选项 1 性能更好,但静态变量违反 OOP 原则。请让我知道是否有任何其他方法可以解决此问题以及我的理解是否正确。
提前致谢。
这是一种“函数式编程”技术,但我建议您使用签名编写函数:
int numberOfOperations(String line)
List<String> linesForFile(File file)
然后是这样的:
int totalOperations = 0;
for(String line : linesForFile(file)){
totalOperations += numberOfOperations(line);
}
return totalOperations;
这样,您就拥有易于测试的单个功能,您不会将“计数操作”的逻辑域与特定源(文件)等耦合起来。
您可以计算具有 int 类型属性的类型实例_operationCounter
的方法中的操作数。OperationCounter
这个实例本身就是任何类的任何其他实例的属性(可能有几个)。为确保您只计算一次,请OperationCounter
提出两个操作 :void makeCount( File in )
和int getCount()
. 一个糟糕的设计是计入int getCount()
.
也许你应该把用户“crnlx”给出的建议和你的第二个选项放在一起。
拥有一个实例变量并将其值设置为函数返回的值。
所以如果你的方法签名是 public void int getNumOfOperations(File fileName);
您将执行以下操作。
int numOfOperations = getNumOfOperations();
这样您就可以在您的类中再次重用该变量,而无需再次调用该函数。