Perl で Yoda 条件を回避する必要があります
5264 ワード
2000 年代半ばに、Perl でいわゆる “Yoda conditions” を主張していた短い時期を覚えています. equality comparisons の左側に定数を配置します.
また、 a foolish consistency is the hobgoblin of little minds であるため、これを文字列およびリレーショナル比較に拡張することもできます.
奇妙に見えますが、コードの前に
これと他の多くの警告を致命的にキャッチしたい場合は、次のようにコードで strictures module from CPAN を使用します.
これにより、コードが exception の多くの間違いを犯した場合、コードは categories をスローします.バージョン管理システムの作業ディレクトリ (具体的には Git 、 Subversion 、 Mercurial 、または Bazaar ) で実行している場合、モジュールは indirect object syntax 、 Perl 4‑style multidimensional arrays 、および bareword filehandles の使用も防ぎます.
代入と条件の話に戻ると、if ステートメント内で代入を使用することが許容される場合が 1 つあります.その場合、条件内でチェックの結果を使用する必要があります.例えば:
これにより、
カバー画像: Paul VanDerWerf from Brunswick, Maine, USA 、 CC BY 2.0 、ウィキメディア・コモンズ経由
=
の代わりに ==
を誤って 1 つ入力してしまった場合、コンパイラは assigning 変数ではなくそれをキャッチします.例えば.:if ( $foo == 42 ) { ... } # don’t do this
if ( 42 == $foo ) { ... } # do this
if ( $foo = 42 ) { ... } # to prevent this
また、 a foolish consistency is the hobgoblin of little minds であるため、これを文字列およびリレーショナル比較に拡張することもできます.
if ( 'bar' eq $foo ) { ... } # weirdo
if ( 42 > $foo ) { ... } # make it stop
奇妙に見えますが、コードの前に
use warnings;
を付ければ不要であることがわかります. Perl は warn you : “Found = in conditional, should be ==
“. (補足: slated to enable warnings by default という厳格さに加えて、2022 年半ばに予定されている Perl v5.36 は、use v5.35;
以上を実行すると was enabled with use v5.11;
になります.これと他の多くの警告を致命的にキャッチしたい場合は、次のようにコードで strictures module from CPAN を使用します.
use strictures 2;
これにより、コードが exception の多くの間違いを犯した場合、コードは categories をスローします.バージョン管理システムの作業ディレクトリ (具体的には Git 、 Subversion 、 Mercurial 、または Bazaar ) で実行している場合、モジュールは indirect object syntax 、 Perl 4‑style multidimensional arrays 、および bareword filehandles の使用も防ぎます.
代入と条件の話に戻ると、if ステートメント内で代入を使用することが許容される場合が 1 つあります.その場合、条件内でチェックの結果を使用する必要があります.例えば:
if ( my $foo = some_truthy_function() ) {
... # do something further with $foo
}
これにより、
some_truthy_function()
の結果のスコープがブロック内に保持されるため、外側のスコープが一時変数で汚染されることはありません.幸いなことに、Perl はこの構文について警告しません.カバー画像: Paul VanDerWerf from Brunswick, Maine, USA 、 CC BY 2.0 、ウィキメディア・コモンズ経由
Reference
この問題について(Perl で Yoda 条件を回避する必要があります), 我々は、より多くの情報をここで見つけました https://dev.to/mjgardner/avoid-yoda-conditions-in-perl-you-should-o0jテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol