abracadabra
Новичок
Есть относительно простой скрипт (350 строчек, что выполняет - не важно, но вообще это callback на вызов платёжной системы), задача который расширить. При этом поведение скрипта несколько меняется, но новое поведение должно быть доступно только при включении соответствующей настройки (пусть просто булева переменная $new).
Скрипт - это простой код без классов.
Проблема состоит в том, что дописание кода с использованием конструкции if (if($new) {/*новое поведение*/} else {/*старое поведение*/}), постепенно превращает код в гордеев узел для чтения. Затем может понадобиться и ещё что-то дописать и код будет устрашающе расти и запутываться.
Решение превратить код в класс, разделить всё выполнение на методы, а затем наследованием расширить этот класс до нового класса, переопределив только те методы, которые поменялись - красивое, но существует вероятность при превращении исходного кода в класс что-то забыть, что-то напутать (например, какую-то переменную, которая должна быть доступна во всех методах, забыть сделать свойством объекта класса), и в итоге что-то где-то сломается, то есть нужно будет ещё одно серьёзное тестирование (тестировать данный скрипт не очень просто, так как он много что меняет в базе и уследить за всем не просто).
Пытаясь найти идеальную середину между читаемостью кода (простотой последующего расширения) и Гиппократовским принципом "не навреди", что посоветуете?
Спасибо большое!
Скрипт - это простой код без классов.
Проблема состоит в том, что дописание кода с использованием конструкции if (if($new) {/*новое поведение*/} else {/*старое поведение*/}), постепенно превращает код в гордеев узел для чтения. Затем может понадобиться и ещё что-то дописать и код будет устрашающе расти и запутываться.
Решение превратить код в класс, разделить всё выполнение на методы, а затем наследованием расширить этот класс до нового класса, переопределив только те методы, которые поменялись - красивое, но существует вероятность при превращении исходного кода в класс что-то забыть, что-то напутать (например, какую-то переменную, которая должна быть доступна во всех методах, забыть сделать свойством объекта класса), и в итоге что-то где-то сломается, то есть нужно будет ещё одно серьёзное тестирование (тестировать данный скрипт не очень просто, так как он много что меняет в базе и уследить за всем не просто).
Пытаясь найти идеальную середину между читаемостью кода (простотой последующего расширения) и Гиппократовским принципом "не навреди", что посоветуете?
Спасибо большое!