5

Perlのベストプラクティスopendir同じポリシーがない理由はありますか?open

私は少なくともこれらの2つのポリシーについて考えています:

4

3 に答える 3

3

Perlのベストプラクティス(最初に言及したポリシー)の元のルールは

ベアワードファイルハンドルを使用しないでください

これは単なる。だけではありませんopen。Perl :: Criticは大部分がPBPに基づいていますが、(perldocとは)異なります。

Perl :: Criticは、コーディング標準を作成してPerlソースコードに適用するための拡張可能なフレームワークです。基本的に、これは静的ソースコード分析エンジンです。Perl :: Criticは、さまざまなコーディングガイドラインを適用しようとする多数のPerl :: Critic::Policyモジュールとともに配布されます。ほとんどのポリシーモジュールは、DamianConwayの著書PerlBestPracticesに基づいています。ただし、Perl :: CriticはPBPに限定されず、Conwayと矛盾するポリシーもサポートします。

したがって、Perl :: Criticがopendirに同じルールを適用しないという事実は、おそらくほとんど見落としです。また、PBPの例では。のみを使用しているという事実も非難される可能性がありますopen。CPANでバグを提出することをお勧めします(コードを見ると、1行の変更のみです)。

2番目のルールは実際にはPBPからのものではありませんが、opendirにも同様に適用できるように思われます。繰り返しになりますが、CPANに関する作成者へのバグレポートは、1行の変更のみであるため、良い考えです。また、実際に意図的な決定であった場合は、より具体的なフィードバックが得られる可能性があります。

訂正:少し異なりますが、2番目のポリシーのPBPで最も近いルールは

ファイルハンドルを明示的に、そしてできるだけ早く閉じます。

そして、そのポリシーを修正することは、1つ以上のライナーですが、保守者がそれが正当であると考えた場合でも比較的簡単です(そして、それが既存のコードを壊しすぎることを心配していませんでした)。

于 2010-01-02T08:03:14.450 に答える
0

著者に聞いてみませんか?私はそれが一種の賢明な答えのように見えることを知っていますが、ソースに行くことが理由を学ぶ最も簡単な方法です

于 2010-01-02T06:52:14.860 に答える
0

野蛮な推測:ファイルははるかに頻繁に使用され、ディレクトリハンドルで「軽薄な」作業を行うことはまだできません。

参考:これらを実際に適用したい場合は、Rubyのオープン+ブロックのメタファーをエミュレートする何かを実装できます。オープンとクローズの間の実際のI / Oを実行するパラメーターとして、別のサブを受け取るオープン/クローズラッパーサブを作成します。コードサンプルを入れることもできますが、ちょっと話題から外れています。

于 2009-12-31T00:33:23.433 に答える