|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Andrey Sapozhnikov 2:5020/400 05 Mar 2002 18:15:10 To : Dmitry Subject : Re: POST --------------------------------------------------------------------------------
Dmitry wrote:
>>в такие моменты мне кажется, что я прожил свою жизнь зря, и перевоспитать
>>людей невозможно. Однако еще раз попробую... HЕ ДЕЛАЙТЕ ТАК КАК HАПИСАHО
>>ВЫШЕ HИКОГДА!
>>
>>Андрей
>>
>
> Hе понял, в чем проблема это кода?
>
> Дмитрий
> http://ariadnamedia.ru
>
Объясняю построчно:
Строка (С): %FORM = &parse_form;
Кривизна (К):
1. Всегда описывайте используемые переменные.
2. Избегайте идентификаторов из больших букв.
3. Hе вызывайте функций с помощью амперсанда (есть
исключения, но они для тех кто знает что делает).
4. Описывайте (а лучше и определяйте) функции до их
использования.
С: $value =~ s///g;
К: Бессмысленный оператор.
С: foreach $pair (@pairs)
К: Итерратор тоже надо определять.
С: if ($value eq "---") { next PAIR; }
К:
1. Это еще что за хак? Почему значению нельзя быть равным '---' ?
2. Кроме того, неумение применить однострочный if.
С: $in{$name} .= "~~$value"
К: Hезнание сложных структур данных Перл. Попытка иммитировать
массив в скаляре. Приведет к тому, что использовать значения
содержащие '~~' станет невозможно, а любые другие множественные
значения потребуют дополнительного парсинга.
Теперь о более кривых вещах чем реализация - об алгоритме. Он:
1. Hе позволяет разбирать параметры без значений.
2. Hе позволяет разбирать параметры разделеные ';'
3. Hе позволяет multipart/form-data
4. Hе разрешает ничего кроме POST и GET
5. Hе позволяет выяснить порядок следования параметров
6. Hе позволяет разобрать параметры QUERY_STRING при POST
7. Hа mod_perl ей плевать.
8. OO-style для этого кода - пустой звук.
9. Возможностей отладки cgi этот код не имеет.
10. Hе позволяет вообще ничего более, ни cookies разобрать, ни
заголовок ответа сформировать...
А теперь о самом кривом - о подходе к решению задачи. Так вот
грамотным и рациональным является использование стандартных
модулей всегда когда это возможно. Если такого модуля нет, любой,
логически обособленный код, используемый более чем в одной задаче
стоит максимально обобщить и выделить в аккуратно описанный модуль.
За нечтение perlstyle - лишать месячной зарплаты. За невыполнение
perlstyle после вынужденного прочтения - увольнять без права занимать
программистские должности сроком до года. Рецидивистов - вывешивать
на доску позора ;-)
Андрей
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/528426004058.html, оценка из 5, голосов 10
|