Доброй ночи.
Есть приложение, недавно закончил рефакторинг. Появилось много классов, неймспейсов и еще больше функций, в том числе и однострочных. Я старался сделать код самодокументируемым, посему часто можно встретить функции вроде:
private function is_map_have_passed_param($map, $param) {
return is_array($map) && isset($map[$param]);
}
private function get_array_of_default_values_from($string) {
return explode('-', $string);
}
Проблема в том, что подобные атомарные функции расплодились по всем классам, и в некоторых местах нарушают DRY - есть даже почти одинаковые функции, но названные по-разному в угоду самодокументируемости. Нельзя просто взять и заменить обратно ту же
get_array_of_default_values_from - будет непонятно, что получается из разбиения строки. Потребуется комментарий, а, как известно, лучший комментарий - тот, без которого удалось обойтись.
Поэтому я придумал воспользоваться трейтами, и вынести все атомарные функции в трейт. Это будет 100% DRY, но самодокументируемость скорее всего пострадает: мне придется объединить несколько функций, делающих одно и то же, но имеющие разные имена, в одну универсальную.
Чем лучше пожертвовать? И можно ли усесться на два стула сразу?