Только для добавления к ответу, данному пользователем "17 из 26"
, сокет на самом деле состоит из 5 кортежей - (исходный IP, исходный порт, целевой IP, целевой порт, протокол). Здесь протокол мог TCP или UDP или любой протокол транспортного уровня. Этот протокол определяется в пакете от поля 'протокола' в дейтаграмме IP.
Таким образом возможно иметь к различным приложениям на сервере, связывающемся с тому же клиенту на точно тех же 4 кортежах, но отличающийся в поле протокола. Например
Apache в стороне сервера, говорящей на (server1.com:880-client1:1234 на TCP) и World of Warcraft, говорящая на (server1.com:880-client1:1234 на UDP)
Оба, клиент и сервер обработает это, поскольку поле протокола в пакете IP в обоих случаях отличается, даже если все другие 4 поля - то же.
Думаю, это должно сработать для вас (если я понял, что вы хотите):
package Perl::Critic::Policy::CodeLayout::NoSideComments;
use strict;
use warnings;
use Readonly;
use Perl::Critic::Utils qw{ :severities :classification :ppi };
use parent 'Perl::Critic::Policy';
our $VERSION = 20090904;
Readonly::Scalar my $DESC => "side comments are not allowed";
Readonly::Scalar my $EXPL => "put the comment above the line, not next to it";
sub supported_parameters { return }
sub default_severity { return 5 }
sub default_themes { return qw( custom ) }
sub applies_to { return 'PPI::Token::Comment' }
sub violates {
my ($self, $elem) = @_;
#look backwards until you find whitespace that contains a
#newline (good) or something other than whitespace (error)
my $prev = $elem->previous_sibling;
while ($prev) {
return $self->violation( $DESC, $EXPL, $elem )
unless $prev->isa("PPI::Token::Whitespace");
return if $prev->content =~ /\n/;
$prev = $prev->previous_sibling;
}
#catch # after a block start, but leave the #! line alone
return $self->violation( $DESC, $EXPL, $elem )
unless $elem->parent->isa("PPI::Document");
return;
}
1;
Я не думаю, что есть какой-либо механизм для фактического перемещения боковых комментариев в Perl :: Tidy
или в Perl :: Critic
. Вы, конечно, можете полностью удалить их, используя -dsc
или - delete-side-comments
, но вы, вероятно, не захотите этого делать.
Однако это определенно возможно расширить Perl :: Critic
для этого, см., в частности, Perl :: Critic :: DEVELOPER
, где описывается, как это делается.
Вы также можете сослаться на некоторые из меньшие расширения, написанные другими, такие как исходный код Perl :: Critic :: Policy :: CodeLayout :: RequireASCII
, часть Perl :: Critic :: More
.
Не все сторонние комментарии плохие. Например, в моем ответе на Как проверить наличие подкаталога в Perl , они не мешают и позволяют людям легче увидеть параллельную структуру в коде. Вот почему мы отложили их в сторону: они второстепенные игроки, которые усиливают утверждение, не привлекая к нему особого внимания.
Я использую комментарии к строкам сами по себе для более подробных объяснений мотивации, особых случаев и скоро. Я использую их, чтобы прервать поток кода, чтобы разработчик их прочитал, потому что они содержат очень важную дополнительную информацию о коде.
И, если вы используете Perl :: Critic, вам иногда понадобятся боковые комментарии :)
....; ## no critic
re brian d foy: «Не все боковые комментарии плохие» - Согласен, боковые комментарии будут часто появляться в вашем коде, если вы используете Smart :: Comments .