【发布时间】:2016-09-09 17:01:02
【问题描述】:
我有以下代码:
public static void main(final String[] args) {
if (args.length == 0) {
System.out.println("Please provide a correct directory path as an argument!");
} else {
System.out.println("Thanks for using our CodeMetrics\n"
+ "The process Might take a long time, please wait!\n"
+ "Please check the CSV file for the final results!");
File ad = new File(args[0]);
File[] list = ad.listFiles();
for (File f : list) {
CodeMetrics codeMetrics = new CodeMetrics();
codeMetrics.parseCommandLine(f.toString());
codeMetrics.countComplexity(codeMetrics.sourceCodeFile);
// Count LOC (Lines of Code)
codeMetrics.countLines(codeMetrics.sourceCodeFile);
codeMetrics.countTestLines(codeMetrics.testFiles);
codeMetrics.printReport();
codeMetrics.writeReport();
}
}
}
现在我想让用户有机会选择调用printReport()方法或同时调用printReport()和writeReport()。问题是如果我放置一个 if 语句,它将在 for each 循环中,并且用户必须为循环中的每个迭代进行选择。
我能看到的唯一想法是实现不同的方法,如下所示:
public static void onlyPrint(final String args){
}
public static void printAndWrit (final String args){
}
这两种方法的代码相同,只是其中一种具有 printReport() 而另一种具有两种方法。但我对这个解决方案并不满意,因为我相信它会有很多代码冗余!有更好的解决方案吗?
谢谢
【问题讨论】:
-
另一种说法是给用户写报告或不写报告的机会。在这两种情况下都会调用 print。
-
在循环之前询问用户,并使用布尔值来判断他们是否需要一种方法或两种方法。然后在循环中的 if 语句中使用该值。
标签: java loops if-statement foreach