|
|
ru.unix- RU.UNIX ---------------------------------------------------------------------- From : yurik shestakov 2:5020/400 28 Jan 2006 17:40:35 To : Valentin Nechayev Subject : Re: Пресечь попытки подбора паролей по ssh -------------------------------------------------------------------------------- On Sat, Jan 28, 2006 at 11:44:34AM +0000, Valentin Nechayev wrote: [...] VN> Hо когда мне pychecker на конструкцию вида VN> if hasattr(self, 'tag_modexxx'): VN> self.doXXX(self.modeXXX) VN> ругается "я нигде не видел присвоения self.modeXXX в данном классе" VN> - это помогает в подавляющем большинстве случаев. VN> Вот при ситуациях вида "присвоил в одной ветке, использую в другой" VN> или особенно в случае если по ссылке подсунули не тот класс - все VN> эти проверки пролетают. VN> Hо они и в классовой структуре перла (с которым тут пытались VN> сравнивать) точно так же пролетают - нигде ведь там списка полей VN> объекта нету, если ты не присвоил $self->{'xxx'} то потом можешь его VN> искать в объекте хоть до посинения. И то что попытка доступа к нему VN> вернёт undef вместо исключения (как в Питоне) - не лучшее решение, Hетч, тут я хочу возразить: над HASH есть функции 1) exists $HASH{$key} 2) defined $HASH{$key} Оно, конечно, плохо тем, что заставляет в функии (методе) писать дополнительные проверки. И use Carp 'croak' для того, чтоб показать то место, откуда позвали данный метод с недостаточным кол-вом аргументов. Конечно, в этом случае Python выглядет приятственне: меньше текста и легче читается. Hо, если есть возможность пользоваться 'use fields' в Perl, то некоторые проблемы решаются на этапе компиляции. Hадеюсь, что через год Perl6 будет уже достаточно стабилен, чтоб его пользовать (будет закончен проект Ponie и устаканится Parrot). VN> а во многих случаях и очень плохое. В Питоне ты напишешь VN> a.get(b, None) вместо a[b], если не уверен в наличии элемента; VN> в Перле надо наоборот нагромождать кучу идиотских проверок чтобы VN> наоборот явно сгенерировать ошибку в случае если элемента нет. VN> В этом смысле мне подход Питона больше нравится. Согласен. VN> Hу а отсутствие излишнего синтаксического мусора (сравни self.x с VN> $self->{'x'} - я когда писал перловый класс просто задолбался VN> щёлкать shift'ом и вставлять все эти безумные символы!) - приводит к VN> большей _полезной_ лёгкости как чтения кода, так и его написания. Есть сокращенный синтаксис: $$self{x} Хотя в Perl6 обещают убрать barewords. VN> В общем, сравнил, да-а? ;) [...] VN> ошибок (которые никакой strict не поймает) будет больше чем VN> остального. Про strict имеет смысл думать при выделении в модуль, VN> при разрастании больше чем ~10K или когда код тебе просто непонятен. Hетч, а как с опечатками бороться то без use strict ? perl -c foo.pl тут не поможет :-) VN> -netch- -- // yurik shestakov --- ifmail v.2.15dev5.3 * Origin: Unknown (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.unix/1006941413177.html, оценка из 5, голосов 10
|