当我编写代码的时候,有时候当我需要选择是否应该创建一个单独的方法(优点是我可以在以后使用我自己的语法)或实现已经存在的复杂方法时,我会碰到这种情况。少了几行代码。)
以下是使用不同编程语言(Objective-C和Java)解释问题的示例。
Objective-C示例:
-(double) maxValueFinder: (NSMutableArray *)data {
double max = [[data valueForKeyPath:@"@max.intValue"] doubleValue];
return maxValue;
}
然后:
...
double max = [self maxValueFinder:data];
...
或者每次都试着打电话:
...
double max = [[data valueForKeyPath:@"@max.intValue"] doubleValue];
...
Java示例:
public static double maxFinder (ArrayList<Double> data) {
double maxValue = Collections.max(data);
return maxValue;
}
然后:
...
double max = maxFinder(data);
...
或者每次都试着打电话:
...
double max = Collections.max(data);
...
或更复杂的案例,使我的问题更加尖锐:
//using jsoup
public static Element getElement(Document content){
Element link = content.getElementsByTag("a").first();
return link;
}
或每次:
...
Element link = content.getElementsByTag("a").first();
...
哪种方法花费更少的资源(性能,内存)还是相同的?
答案 0 :(得分:2)
绝对没关系。至少在您的Java情况下,您无用地重新创建现有功能,这很荒谬。
您应首先查看标准库中是否包含该功能,然后查看现有的知名库是否具有该功能,并且只有在此之后您才应考虑自己编写实现(特别是对于更复杂的功能)。
性能与您的问题无关,除非您花费在重新创建现有功能上的时间越多,您花在实际新代码上的时间就越少(因此降低了编程性能)。
至于创建包装器方法,这在某些情况下很有用,特别是如果实际的方法调用经常被链接,并且您发现自己在代码中拥有越来越多的那些。但是代码清晰度和编写过多的代码之间存在微妙的差异。
public void parseHtml() {
parseFirstPart();
parseSecondPart();
parseThirdPart();
}
如果我们假设每个parse
方法只包含1个或2个方法调用,那么添加这些额外的方法很可能是无用的,因为通过适当的注释可以实现相同的目的。如果parse
方法包含大量调用,则从中提取方法是有意义的。没有关于它的规则,这是你在编程时学到的技能(当然,很大程度上取决于你所看到的漂亮的代码。
答案 1 :(得分:-1)