网站开发有限公司/青岛seo外包公司
简而言之,我的问题是:如果一个方法被多次调用,在内存消耗方面是否更好以使其无效并使用List作为参数来返回其值?如果真的能节省内存,那么代码难以阅读并不是一个坏习惯吗?
让我举一个例子来说明一点.假设我有一辆车,每辆车都必须属于一个品牌.我有一种方法可以从品牌列表中返回所有汽车,这种方法使用foreach和方法从一个品牌中检索所有汽车.如下代码:
private List getCarsByBrands(List brands) {
List result = new Arraylist<>;
for(Brand brand : brands) {
result.add(getCarsBySingleBrand(brand))
}
return result;
}
private List getCarsBySingleBrand(Brand brand) {
List result = new Arraylist<>;
result.add(retrieveCarsByBrand(brand)) // retrieveCarsByBrand omitted
return result;
}
我的一位同事辩护说,方法getCarsBySingleBrand应该被重写为无效并使用List作为参数,这个列表将包含所有的汽车,如下所示:
private List getCarsByBrands(List brands) {
List result = new Arraylist<>;
for(Brand brand : brands) {
getCarsBySingleBrand(result, brand))
}
return result;
}
private void getCarsBySingleBrand(List cars, Brand brand) {
cars.add(retrieveCarsByBrand(brand)) // retrieveCarsByBrand omitted
}
他认为这种方式消耗的内存较少,因为每次调用方法getCarsBySingleBrand时他都不会创建List.我认为这是一种不必要的优化,并且是一种不好的做法,因为代码更难理解.