У меня есть метод, целью которого является получение элементов коллекции.
Коллекция может содержать различные предметы, например, ручки, карандаши и бумаги.
1-й параметр позволяет мне указать методу, чтобы он извлекал только те элементы itemTypes, которые я передаю (например, просто ручки и карандаши).
2-й параметр помечает функцию для использования типов элементов коллекции по умолчанию, вместо этого.
getCollectionItems($itemTypes,$useCollectionDefaultItemTypes) {
foreach() {
foreach() {
foreach() {
// lots of code...
if($useCollectionDefaultItemTypes) {
// get collection's items using collection->itemTypes
}
else {
// get collection's items using $itemTypes
}
// lots of code...
}
}
}
}
Что странно, так это то, что если я установлю для $ useCollectionDefaultItemTypes значение true, функции не нужно будет использовать первый параметр.Я рассматривал возможность рефакторинга этого метода на два, таких как:
getCollectionItems($itemTypes); // get the items using $itemTypes
getCollectionItems(); // get the items using default settings
Проблема заключается в том, что у методов будет много дублирующегося кода, за исключением области оператора if.
Есть ли лучшийспособ оптимизировать это?