|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alexey Mahotkin 2:5020/400 21 Nov 2003 00:40:24 To : "Ilia Vinokurov" Subject : Re: Производительность ООП -------------------------------------------------------------------------------- >>>>> "IV" == Ilia Vinokurov <ilvin@teleserv.ru> writes: IV> Хотел сказать, что можно и покороче Web-проекты писать, да только как IV> глянул на свою заготовку и получил 1000 строк... А гениальность IV> программера состоит в том, чтобы писал просто и коротко :-) Кстати, IV> как ты относишься к POD документированию? Среди тех 40 тыс. 30 тыс - IV> POD документация ? Hет, конечно. С документацией отдельная подстава. Мало кто, выдвигая лозунг "документируйте свой проект!", специфицирует метрики: какой результат мы хотим получить от документирования. Из-за этого получается стандартная подстава: /* max(a, b): Эта функция возвращает максимальное из двух чисел. Аргументы: a: первое число; b: второе число; Результат: a, если b < a; b в противном случае. */ Hа этом программист выдыхается, и пишет функцию из 800 строк, в которой документирована только переменная "i" (рядом написано: "счётчик цикла"). Я, конечно, утрирую. Многие забывают, что язык программирования, кроме шуток, неплохо подходит для комментирования. Я лично с завидной регулярностью провожу, скажем, пятнадцать минут времени, придумывая правильное имя переменной (и практически всегда после этого весь код, который использует эту переменную, становится кристально ясным или же его можно тривиально рефакторить в кристально ясный). Hе говоря уж про названия функций. Зачем писать комментарий к sub fetch_all_subsections($section)? Что касается комментариев per se, в последнее время я разбиваю "основные" функций (чаще всего sub handler() и вообще функций больше чем в два экрана) однострочными комментариями на маленькие "главки". Я не знаю, что там будут думать будущие читатели этого кода, но мне он представляется таким образом вполне структурированным. IV> Под веянием этого топика я переписал 4 plain perl модуля в 2 ОО IV> класса. Получилось забавно: заработало, но от полиморфизма у меня IV> крышу снесло. Конечно, работает, код стройный, но чтобы "крутить" IV> код, мозги должны работать в нескольких измерениях, точнее классах... У любого нормального программиста мозги должны работать в нескольких измерениях. --alexm P.S.: my $r = Transvn::Repo->new($svn_repo); my $tp = Transvn::ThirdParty->new($r, $third_party); my $s = Transvn::Series->new($tp, $series_name); my $wc_dir = $s->wc_dir(); if (!$wc->{svn_managed} && -e $wc_dir) { die "start-series: $wc_dir already exists"; } # create series directory in repository $s->mkpaths(); # copy vendor tree to pristine patch my $p = $s->pristine_patch(); $tp->copy_tree_to($p); if (!$wc->{svn_managed}) { # checkout new working copy $p->checkout_wc($wc_dir); chdir $wc_dir or die "Cannot chdir($wc_dir): $!"; $s->initialize_metadata_dir(); } else { # update current working copy die "Not implemented yet"; } return 0; --- ifmail v.2.15dev5.1 * Origin: tyranny (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/386526aaa3d2.html, оценка из 5, голосов 10
|