Perl開発者がgiven/when文を非推奨にすることを決めたので、if/elsif/elseに戻す以外に推奨される置換がありますか?完全に異なる何かが両方if
/elsif
/else
と合理的に、多くの場合、実際にあるgiven
/when
、より優れている場合を除いて -Perlのdeprecated-ishは/ whenの代わりにお勧めしますか?
6
A
答えて
7
if
/elsif
/else
チェーンはほとんどの時間を最高のオプションです。 「完全に異なる」アプローチの例としては、さまざまなシナリオを処理するためのさまざまなタイプのオブジェクトを作成し、メソッドディスパッチを使用して作業を行う、またはコードをデータ駆動型にする機会を見つけることです。両方とも適切で適切な場合は、コード内のswitch文の数を大幅に減らすことができます。
0
補足として、すぐに更新する必要のある/ when/defaultコードがある場合、 'for'とif/elsif/elseの組み合わせが適切であることがわかりました。 given
をfor
に置き換え、ステートメントをif
& elsif
のカスケードに置き換え、default
をelse
に置き換えてください。これにより、暗黙的に$_
を使用してすべてのテストを続けることができ、書き換えを少なくすることができます。 (しかし、他の特別なスマートマッチ機能はもう機能しません)。
これは、指定された/ whenを既に使用しているコードを書き直すためです。新しいコードを書くために、@hobbsが正しい答えを持っています。
+0
'given'内の' next'は 'for'内の' next'とは異なる動作をすることに注意してください。 –
関連する問題
- 1. ボタンをお勧めします..もしお勧めですか?
- 2. なぜFontAwesomeはCDNリンクの代わりに.jsスクリプトを使用することをお勧めしますか?
- 3. Flashの代わりにアニメーション/ゲームにどのような開発ツールをお勧めしますか?
- 4. MySQL:なぜvarcharフィールドの代わりにintにジョインすることをお勧めしますか?
- 5. Telerik upload contorolの代替手段をお勧めしますか?
- 6. 私には、Rails 3.1(ruby 1.9.2+)のアプリケーション/ Herokuの代わりのホストソリューションをお勧めします。
- 7. レコードの代わりに関連付けリストを使用することをお勧めしますか?
- 8. ダイナミックルーティングプロトコルの代わりにスタティックルーティングを使用することをお勧めしますか?
- 9. 要求属性の代わりにThreadLocalシングルトンを使用することをお勧めしますか?
- 10. 誰かがJava Swingの代替案をお勧めしますか?
- 11. WindowsにはどのHTTPトラフィックモニタをお勧めしますか?
- 12. シンボリックリンクの代わりにCwd :: abs_pathに代わるPerl
- 13. Perlのハードリンクの代わりにシンリンク
- 14. PerlのWindows環境キーを保存することをお勧めします。
- 15. Mockitoでテストするときは、Interfaceの代わりにImplementationを使用することをお勧めしますか?インターフェイスでは動作しません
- 16. Perl `dirname`がフルパスの代わりにドットを出力します
- 17. Capistranoの代わりにPerlまたはLuaがありますか?
- 18. std :: vectorの代わりにunsigned intを使用しています<bool>またはstd :: bitsetをお勧めしますか?
- 19. Executors.newSingleThreadExecutorをアプリウィジェットでお勧めします
- 20. お勧めします.Net Job/Task Queue
- 21. デザインパターンをお勧めします
- 22. 本当にスーパーネイティブのデルファイグラフエンジンをお勧めしますか?
- 23. "ObjectMessageの使用は一般的にお勧めできません"、代わりに何を使用しますか?
- 24. UrlRewriter.Net、ASP.NET MVCルーティング、または何をお勧めしますか?
- 25. Perl - C:\ Perl \ libの代わりにC:\ Perl \ lib \ perl5フォルダにインストールする
- 26. なぜGIFの代わりにPNGを使用することをお勧めしますか、iphoneのJPG画像ですか?
- 27. いくつかのpython httpクライアントライブラリをお勧めしますか?
- 28. divの代わりにdivの上にお互いの代わりに
- 29. EF7のDbSet Create()メソッドの代わりに使用するもので、単に新しいT()にすることをお勧めします
- 30. この正規表現より優れた代替方法をお勧めしますか?
言い換えれば、勧告は、 'given-when-default'の導入前に使用されたコーディングスタイルに戻ります! **私はそれが非常にイライラしていることを知っています。** – lexu