Чем пожертвовать, DRY или самодокументируемым кодом? Доброй ночи. Есть приложение, недавно закончил рефакторинг. Появилось много классов, неймспейсов и еще больше функций, в том числе и однострочных. Я старался сделать код самодокументируемым, посему часто можно встретить функции вроде: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, но самодокументируемость скорее всего пострадает: мне придется объединить несколько функций, делающих одно и то же, но имеющие разные имена, в одну универсальную. Чем лучше пожертвовать? И можно ли усесться на два стула сразу?
Как всегда, выбор между DRY и самодокументируемым кодом зависит от конкретной ситуации и приоритетов проекта. В вашем случае, если количество повторяющихся функций значительно и они начинают усложнять код, то, возможно, стоит пожертвовать некоторой самодокументируемостью в пользу DRY.
Использование трейтов для вынесения повторяющихся функций может быть хорошим компромиссом. Вы можете выделить общие функции в трейт, сохраняя при этом их универсальность, и при необходимости добавить комментарии к этим функциям для ясности их назначения.
Важно помнить, что чистый и понятный код важнее обоих аспектов. Поэтому старайтесь найти баланс между DRY и самодокументируемым кодом, чтобы ваш код был легко поддерживаемым и понятным для других разработчиков.
Как всегда, выбор между DRY и самодокументируемым кодом зависит от конкретной ситуации и приоритетов проекта. В вашем случае, если количество повторяющихся функций значительно и они начинают усложнять код, то, возможно, стоит пожертвовать некоторой самодокументируемостью в пользу DRY.
Использование трейтов для вынесения повторяющихся функций может быть хорошим компромиссом. Вы можете выделить общие функции в трейт, сохраняя при этом их универсальность, и при необходимости добавить комментарии к этим функциям для ясности их назначения.
Важно помнить, что чистый и понятный код важнее обоих аспектов. Поэтому старайтесь найти баланс между DRY и самодокументируемым кодом, чтобы ваш код был легко поддерживаемым и понятным для других разработчиков.