既然Perl開發者已經決定對給定/時間語句進行排序,那麼除了回到if/elsif/else之外,還有推薦替代嗎?什麼是推薦的替代Perl的棄用ish給出/什麼時候?
6
A
回答
7
if
/elsif
/else
鏈的大部分時間是最好的選擇 - 除非完全不同的東西比既if
/elsif
/else
和given
/when
,這實際上是相當往往更好。 「完全不同」的方法的例子是創建不同類型的對象來處理不同的場景,並讓方法調度爲你做你的工作,或者找到一個機會讓你的代碼更多的數據驅動。這兩種方法,如果它們合適,而且你做得對,可以大大減少代碼中「switch語句」結構的數量。
0
作爲補充,我發現'for'和if/elsif/else的組合很好,如果你有一些給定/當/默認代碼需要快速更新。只需將given
替換爲for
並用級聯的if
& elsif
替換when
語句,並用else
替換default
即可。這允許所有測試隱含地繼續使用$_
,需要更少的重寫。 (但請注意,其他特殊的智能匹配功能將不再工作。)
這只是用於重寫已使用given/when的代碼。爲了編寫新的代碼,@ hobbs有正確的答案。
+0
還要注意,'given'內的'next'將表現得與'for'內的'next'不同。 –
相關問題
- 1. 什麼時候推薦使用MySQL BLOB?
- 2. 爲什麼不推薦使用window.showModalDialog?代替使用什麼?
- 3. 是不推薦使用NSArrayController,它的替代是什麼?
- 4. 不推薦使用Springfox ClassOrApiAnnotationResourceGrouping類的替代方法是什麼?
- 5. kube-up.sh已棄用。什麼是替代
- 6. 爲什麼AddressEntry.Members不推薦?同樣的替代方法是什麼?
- 7. 什麼時候用index.php代替index.html
- 8. 什麼時候使用gethrvtime()代替gethrtime()
- 9. 什麼時候使用ListView代替RecyclerView
- 10. 不推薦使用NSDirectoryFileType。什麼是替代品?
- 11. ProgressDialog不推薦使用。替代方法是什麼?
- 12. 推薦替代已棄用的call_user_method?
- 13. 爲什麼jQuery.ready在如此慢的時候推薦?
- 14. 什麼時候推薦開始製作DLL的
- 15. 什麼時候推薦在NHibernate中使用第二級緩存
- 16. XMLHttpRequest已棄用。代替使用什麼?
- 17. 什麼是推薦的JAX-RS組合?
- 18. 什麼是GNU autotools的推薦版本?
- 19. android中推薦的ocr庫是什麼?
- 20. 什麼是opencv_traincascade的推薦參數?
- 21. 你推薦的Emacs Lisp是什麼?
- 22. 什麼是推薦的TFS結構。
- 23. 什麼是推薦的Bcrypt C實現?
- 24. Confluence推薦的瀏覽器是什麼?
- 25. CMS的推薦架構是什麼?
- 26. 什麼是推薦的gitattributes設置?
- 27. 什麼是Perl集成的推薦R接口?
- 28. 什麼是XmlDataDocument和XslTransform的不推薦使用的替代方法?
- 29. 在OSX上用Python代替現在不推薦使用的Carbon.File.FSResolveAliasFile是什麼?
- 30. 什麼時候放棄MVVM有意義?
換句話說,這個推薦是回到引入'given-when-default'之前使用的編碼風格! **我發現非常令人沮喪,** – lexu