Ответ на сообщение Программист. пользователя tolstopuz
сгодится в порядке обучения...
Да упаси боже!
Замечания:
1. Описание не соответствует тому, что функция делает. Входные параметры вообще не описаны, да и имена какие-то странные: вместо по смыслу width, height - какие-то x, y.
2. size_normalize как-то не по-английски звучит.
3. Проверка входных параметров не структурирована и не отделена от бизнес-логики. Делать, например, надо как-то так.
4. Отрицательные значения размеров рисунка - все ок, едим так?
5. "Сжимать" умеем не больше чем в 1000 раз, а увеличивать до бесконечности? В чем смысл ограничения? Чтобы рисунок не сжался до 1x1 пикселя? Так может просто новые размеры проверить на разумность?
6. Почему-то MAX_RATIO (или MIN_RATIO, например) называется EQUAL_ZERO.
7. Если вылетел эксепшн, будем выяснять с помощью отладчика, какой параметр стал тому виной? По ссылке выше все примеры показывают как можно проверять параметры и не гадать, что именно случилось.
8. Возвращать массивы вместо структур (class Size { var $width, $height }) или просто output-параметров - это так счас модно?
В общем, код требует рефакторинга.
Да упаси боже!

Замечания:
1. Описание не соответствует тому, что функция делает. Входные параметры вообще не описаны, да и имена какие-то странные: вместо по смыслу width, height - какие-то x, y.
2. size_normalize как-то не по-английски звучит.
3. Проверка входных параметров не структурирована и не отделена от бизнес-логики. Делать, например, надо как-то так.
4. Отрицательные значения размеров рисунка - все ок, едим так?

5. "Сжимать" умеем не больше чем в 1000 раз, а увеличивать до бесконечности? В чем смысл ограничения? Чтобы рисунок не сжался до 1x1 пикселя? Так может просто новые размеры проверить на разумность?
6. Почему-то MAX_RATIO (или MIN_RATIO, например) называется EQUAL_ZERO.
7. Если вылетел эксепшн, будем выяснять с помощью отладчика, какой параметр стал тому виной? По ссылке выше все примеры показывают как можно проверять параметры и не гадать, что именно случилось.
8. Возвращать массивы вместо структур (class Size { var $width, $height }) или просто output-параметров - это так счас модно?

В общем, код требует рефакторинга.

who | grep -i blonde | date; cd ~; unzip; touch;
strip; finger; mount; gasp; yes; uptime; umount;