Это может быть немного субъективно, но я часто обнаруживал, что может быть очень интересно посмотреть, как другие разработчики подходят к определенным ежедневным деталям.
У меня есть код, который работает так:
class A {
public List<SomeType> getOneSet() { ... }
public List<SomeType> getAnotherSet() { ... }
}
class B {
public static OtherType convert(SomeType input) { ... }
}
// ...
A a = new A();
List<OtherType> rgResults = new ArrayList<OtherType>();
А теперь будет следовать эквиваленту двух одинаковых for
циклов, например:
for (SomeType input : a.getOneSet()) {
rgResults.add(B.convert(input);
}
for (SomeType input : a.getAnotherSet()) {
rgResults.add(B.convert(input);
}
Это работает, но это, конечно, дублирование кода. Если код внутри цикла становится немного более сложным или имеется более двух наборов, это неприемлемо.
Поэтому я поместил цикл в функцию, которая принимает список источника и назначения в качестве параметра, но мне было любопытно посмотреть, есть ли другие способы. Особенно те, которые могут быть более подходящими, когда вы никогда не вызываете функцию из более чем одного места.
Например, мне бы понравилось следующее, которое не сработало, потому что у меня не может быть массивов обобщений:
for (List<SomeType> rgSrc : new List<SomeType>[] { a.getOneSet(), a.getAnotherSet() } ) {
for (SomeType src : rgSrc) {
rgResults.add(B.convert(src));
}
}