Обсуждение участника:ArmorAdmin/Говнокод — различия между версиями
Материал из Бронетанковой Энциклопедии — armor.kiev.ua/wiki
(Новая страница: «== Пример №2 == Кстати, почему бы не сделать так: <source lang="php"> $imgCreateMethods = array ( IMAGETYPE_GIF => 'gif', …») |
(→Пример №2) |
||
Строка 14: | Строка 14: | ||
Вледельцу сайта в принципе необязательно знать ПХПовы имена функций, а поскольку они унифицированы и новые будущие почти наверняка будут придерживаться того же соглашения об именовавании, то достаточно в конфиге оставить только понятно-расширенческую часть, без imagecreatefrom оно доступнее для понимания выглядит. [[Участник:LostArtilleryMan|LostArtilleryMan]] 03:56, 17 августа 2010 (UTC) | Вледельцу сайта в принципе необязательно знать ПХПовы имена функций, а поскольку они унифицированы и новые будущие почти наверняка будут придерживаться того же соглашения об именовавании, то достаточно в конфиге оставить только понятно-расширенческую часть, без imagecreatefrom оно доступнее для понимания выглядит. [[Участник:LostArtilleryMan|LostArtilleryMan]] 03:56, 17 августа 2010 (UTC) | ||
+ | |||
+ | : Ты не поверишь. Чесались руки дать именно такой вариант. Исходил из соображений: во-1-х всё же нет гарантии, что именование других подобных функций будет построено по этой же схеме, во-2-х владелец сайта сам по себе решать что-то добавлять или удалять не будет, ему будут соответствующие инструкции. А на уровне инструкции «''добавьте туда-то строчку '''IMAGETYPE_PNG => 'imagecreatefrompng','''''» или «''добавьте туда-то строчку '''IMAGETYPE_PNG => 'png','''''» — для владельца сайта одинаково «понятно». И в моем варианте читабельность для программиста остается — суть массива в указании функций создания картинок указанных форматов, а в твоём типу на первый взгляд соответствует расширение (?) и смысл применения массива надо уже по коду искать. | ||
+ | : Это я, кстати, делаю движок работы с галереями картинок (загрузка пользователями). Делаю не с нуля, взял за основу http://sourceforge.net/projects/dir-list/ но кардинально переделываю, пока только чистый рефакторинг, код хоть и понятный, несложный и с комментариями, но говнокода дофига. Например, практически идентичный код создания картинок уменьшенного размера повторяется в трех разных файлах с минимальными изменениями — я ввёл единый класс, отвечающий за изменение размеров и в этих файлах сократил код обращением к классу. Закончу рефакторинг, буду делать новый функционал (управление галереями юзеров, навигация по галереям и пр.). --[[Участник:ArmorAdmin|Чобиток Василий]] 10:40, 17 августа 2010 (UTC) |
Версия 10:40, 17 августа 2010
Пример №2
Кстати, почему бы не сделать так:
$imgCreateMethods = array (
IMAGETYPE_GIF => 'gif',
IMAGETYPE_JPEG => 'jpeg',
IMAGETYPE_PNG => 'png',
);
$fun = 'imagecreatefrom' . $imgCreateMethods[$imgType];
$img = $fun($image_path);
Вледельцу сайта в принципе необязательно знать ПХПовы имена функций, а поскольку они унифицированы и новые будущие почти наверняка будут придерживаться того же соглашения об именовавании, то достаточно в конфиге оставить только понятно-расширенческую часть, без imagecreatefrom оно доступнее для понимания выглядит. LostArtilleryMan 03:56, 17 августа 2010 (UTC)
- Ты не поверишь. Чесались руки дать именно такой вариант. Исходил из соображений: во-1-х всё же нет гарантии, что именование других подобных функций будет построено по этой же схеме, во-2-х владелец сайта сам по себе решать что-то добавлять или удалять не будет, ему будут соответствующие инструкции. А на уровне инструкции «добавьте туда-то строчку IMAGETYPE_PNG => 'imagecreatefrompng',» или «добавьте туда-то строчку IMAGETYPE_PNG => 'png',» — для владельца сайта одинаково «понятно». И в моем варианте читабельность для программиста остается — суть массива в указании функций создания картинок указанных форматов, а в твоём типу на первый взгляд соответствует расширение (?) и смысл применения массива надо уже по коду искать.
- Это я, кстати, делаю движок работы с галереями картинок (загрузка пользователями). Делаю не с нуля, взял за основу http://sourceforge.net/projects/dir-list/ но кардинально переделываю, пока только чистый рефакторинг, код хоть и понятный, несложный и с комментариями, но говнокода дофига. Например, практически идентичный код создания картинок уменьшенного размера повторяется в трех разных файлах с минимальными изменениями — я ввёл единый класс, отвечающий за изменение размеров и в этих файлах сократил код обращением к классу. Закончу рефакторинг, буду делать новый функционал (управление галереями юзеров, навигация по галереям и пр.). --Чобиток Василий 10:40, 17 августа 2010 (UTC)