5

私の部門は現在、いくつかの一般的なコードのベスト プラクティスを決定していPerl::TidyますPerl::Critic

現在、サイドコメントに問題があります。サイドコメントは次のとおりです。

my $counter = 0;  # Reset counter

ほとんどの場合、サイド コメントは問題のコードの上に記述できるため、サイド コメントはより読みやすくなります。可能な限り、Perl::Tidy解決策は完璧です。これは、サイドコメントをその上の行に移動し、2番目に良いのはPerl::Criticポリシー(CPANでも見つけられませんでした)であり、3番目と最後は開発者です。コードレビューを行う際に、これらのコメントを指摘するように注意してください。

またはで実装することは可能ですPerl::TidyPerl::Critic?

4

4 に答える 4

17

これはあなたのために働くはずだと思います(あなたが何を望んでいるのか理解していれば):

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;
于 2009-09-04T14:01:21.300 に答える
3

Perl::Tidyサイドコメントを実際にまたはに移動するメカニズムはないと思いますPerl::Critic-dscもちろん、またはを使用してそれらを完全に削除することもできますが、--delete-side-commentsおそらくそうしたくないでしょう。

ただし、これを行うために拡張することは間違いなく可能です。Perl::Critic具体的Perl::Critic::DEVELOPERには、これがどのように達成されるかを説明しています。

の一部であるへのソース など、他の人が書いた小さな拡張機能のいくつかを参照することもできます。Perl::Critic::Policy::CodeLayout::RequireASCIIPerl::Critic::More

于 2009-09-04T12:49:50.767 に答える
2

すべてのサイドコメントが悪いわけではありません。たとえば、 Perl でサブサブディレクトリを確認する方法に対する私の回答では、邪魔にならないようにして、コード内の並列構造をより簡単に確認できるようにしています。そういうわけで、私たちはそれらを脇に置きます: 彼らは、多くの注意を喚起することなく声明を強化するマイナーなプレーヤーです.

動機や特殊なケースなどをより詳細に説明するために、行のコメントを単独で使用します。これらを使用してコード フローを中断し、開発者がそれらを確実に読み取れるようにします。これらには非常に重要な追加コード情報が含まれているためです。

また、Perl::Critic を使用している場合は、サイド コメントが必要になることがあります :)

 ....; ## no critic
于 2009-09-04T16:47:41.207 に答える
0

re brian d foy の「すべてのサイド コメントが悪いわけではありません」 -- 同意しました。 Smart::Commentsを使用すると、コードにサイド コメントが頻繁に表示されます。

于 2009-09-08T17:00:55.857 に答える