重构一个依赖于循环的方法
Refactoring a method that relies on a loop
下面我的 java 代码会根据 list
中有多少狗 超过 来增加 int
值一定年龄:
for (int i = 0; i < dogList.size(); i++) {
if (dogList.get(i).getAge() > 5) {
dogsOverFive++
continue;
}
}
将我的代码重构为它自己的方法的最佳做法是什么?
我应该将 i
和 list
作为参数传递吗?
只需这样做:
public static int olderThan(List<Dog> dogList, int age) {
int count = 0;
for (int i = 0; i < dogList.size(); i++) {
if (dogList.get(i).getAge() > age) {
count++;
continue;
}
}
return count;
}
顺便说一句 continue;
声明是不必要的。
您应该传递一个 list
和一个 age
作为参数,并且 return 一定数量的此类狗作为 int
值。
我建议考虑我的 Java 8 解决方案。
public int olderThan(List<Dog> list, int age) {
return (int)list.stream().filter(dog -> dog.getAge() > age).count();
}
我的同事@Nikolas Charalambidis 和@Dmitry Bychenko 展示了其他标准方法。
下面我的 java 代码会根据 list
中有多少狗 超过 来增加 int
值一定年龄:
for (int i = 0; i < dogList.size(); i++) {
if (dogList.get(i).getAge() > 5) {
dogsOverFive++
continue;
}
}
将我的代码重构为它自己的方法的最佳做法是什么?
我应该将 i
和 list
作为参数传递吗?
只需这样做:
public static int olderThan(List<Dog> dogList, int age) {
int count = 0;
for (int i = 0; i < dogList.size(); i++) {
if (dogList.get(i).getAge() > age) {
count++;
continue;
}
}
return count;
}
顺便说一句 continue;
声明是不必要的。
您应该传递一个 list
和一个 age
作为参数,并且 return 一定数量的此类狗作为 int
值。
我建议考虑我的 Java 8 解决方案。
public int olderThan(List<Dog> list, int age) {
return (int)list.stream().filter(dog -> dog.getAge() > age).count();
}
我的同事@Nikolas Charalambidis 和@Dmitry Bychenko 展示了其他标准方法。