|
|
ru.unix- RU.UNIX ---------------------------------------------------------------------- From : Sergey Skvortsov 2:5020/400 29 Jan 2006 22:54:10 To : Valentin Nechayev Subject : Re: Пресечь попытки подбора паролей по ssh -------------------------------------------------------------------------------- Valentin Nechayev wrote: > > Hо они и в классовой структуре перла (с которым тут пытались > сравнивать) точно так же пролетают - нигде ведь там списка полей > объекта нету, если ты не присвоил $self->{'xxx'} то потом можешь его > искать в объекте хоть до посинения. И то что попытка доступа к нему > вернёт undef вместо исключения (как в Питоне) - не лучшее решение, > а во многих случаях и очень плохое. В Питоне ты напишешь > a.get(b, None) вместо a[b], если не уверен в наличии элемента; > в Перле надо наоборот нагромождать кучу идиотских проверок чтобы > наоборот явно сгенерировать ошибку в случае если элемента нет. см. ниже > В этом смысле мне подход Питона больше нравится. > > Hу а отсутствие излишнего синтаксического мусора (сравни self.x с > $self->{'x'} - я когда писал перловый класс просто задолбался > щёлкать shift'ом и вставлять все эти безумные символы!) - приводит к > большей _полезной_ лёгкости как чтения кода, так и его написания. В Perl способов создать и использовать класс тысяча, начиная с разных структур для bless, заканчивая безумным числом классогенераторов: http://search.cpan.org/search?mode=dist&query=class Hash-based class это весьма утомительный вариант, особенно с учётом autovivification. Хотя причину распространённости понять легко. Есть стандартные модули типа "fields" и "Class::Struct" которые сильно упрощают жизнь, позволяя писать классы в "привычном" (типа C++/Java) стиле. Так что вариант "$self->x" не сильно хуже "self.x". Можно даже писать так: $self->x = 42; хотя работа с lvalues в Perl - это чистое неразбавленное зло. Впрочем, когда Perl 5 окончательно перетащат на Parrot - тогда будет веселее. > остального. Про strict имеет смысл думать при выделении в модуль, > при разрастании больше чем ~10K или когда код тебе просто непонятен. Hе согласен. Достаточно приучить себя начинать любой скрипт/модуль с: use strict; use warnings; и жизно сильно облегчается. Более того, нужен локальный perlstyle, заточенный под конкретные нужды проекта/компании. Perl вообще слишком похож на живой (натуральный) язык. Т.е. можно выбирать себе любой лексикон, и строить предложения как угодно, начиная с уличного жаргона, заканчивая выхолощенно-академичным, строгим (салонным :) стилем. Hо в целях коммуникации (в т.ч. будущей поддержки) ограничивать себя одним "стилем изложения" - это необходимость. Т.е. классический Perl-вариант: "There's more than one way to do it" иногда надо приводить к не менее классическому Eiffel-варианту: "There's only one right way to do it" -- Sergey Skvortsov mailto: skv@protey.ru --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.unix/6577efa128fa.html, оценка из 5, голосов 10
|