我發現在Perl子程序中使用標籤,從多個循環中斷或重做一些具有更新變量的部件非常有幫助。社區看到這種編碼風格如何?在子程序內使用標籤皺起眉頭?在被認爲是壞習慣的Perl子程序中使用標籤?
9
A
回答
17
不。他們的服務完全符合您的描述,我認爲它們是使用得太少的語言的一個很好的功能。另一方面,每當我發現自己在思考標籤的使用時,我也會發現自己想知道我的代碼是否需要重構一些東西。
12
使用帶有next
,last
和redo
的標籤很好,但您應該暫停以考慮代碼結構是否是最好的。根據我的經驗,除了封閉循環之外,您很少需要使用這些運算符(這意味着您不需要使用標籤)。我們強烈建議您不要使用goto LABEL
。
8
通常沒有理由使用goto LABEL
。
例如:
my $i = 10;
Label:
# ...
goto Label if --$i;
不如寫成:
my $i = 10;
{
# ...
redo if --$i;
}
我能想到的使用標籤的唯一原因,是打出來的多個循環,或繼續外部循環。
my $i = 10;
OUTER: while(1){
# ...
while(1){
# ...
last OUTER unless --$i;
}
}
my $i = 10;
OUTER: {
# ...
{
# ...
redo OUTER if --$i;
}
}
相關問題
- 1. 使用默認參數健康習慣還是壞習慣?
- 2. 在網站主頁上使用flash是否被認爲是壞習慣?
- 3. 標籤助手 - 自閉HTML標籤是一個壞習慣?
- 4. 是否將php.ini的session.auto_start設置爲1認爲是壞習慣?
- 5. 在哪個長度上被認爲是壞習慣的HashMap的String鍵?
- 6. 空旗是壞習慣嗎?
- 7. 是mysql_connect頭部壞習慣?
- 8. 這會被認爲是良好的編程習慣,當使用KVO
- 9. Java - 這是一個類的使用來編輯一個標籤壞習慣嗎?
- 10. 在C壞習慣中使用char作爲bool嗎?
- 11. Scrum Master的壞習慣
- 12. Class scope typedef壞習慣?
- 13. 爲什麼重寫window.onresize壞習慣?
- 14. 使用if(...)時,爲什麼這被認爲是一個很好的編程習慣?
- 15. 重寫一個方法來傳遞一個被認爲是壞習慣的靜態常量?
- 16. 在具有委託使用的多線程winform應用程序中,什麼被認爲是良好的編程習慣?
- 17. PHP是否有像perl這樣的默認分配習慣用法?
- 18. 爲什麼設置$ locationProvider的前綴在angularjs中被認爲是一個好習慣?在角文檔中提到
- 19. 這是使用iframe的好習慣嗎
- 20. Module#module_function被認爲是壞的嗎?
- 21. Perl - 將空字符串用作false是否是好習慣?
- 22. www子域的好習慣?
- 23. 在Safari + Wamp中被認爲是評論的PHP標籤
- 24. 構建flatiron HTTP應用程序的習慣用法是什麼?
- 25. hjkl習慣破壞 - 軟版本
- 26. 第二組狀態回調 - 壞習慣?
- 27. 在另一個線程中使用線程是否是一個好習慣?
- 28. PHP程序員的好習慣/項目
- 29. 這是使用數據庫調用時的一個壞習慣嗎?
- 30. 使用「NOT EXISTS」被認爲是不好的SQL練習嗎?
在大多數情況下,我認爲的代碼是與使用標籤更清晰。重寫代碼以使其不再使用它們通常會導致多行額外的代碼。 – Geo 2009-10-28 09:33:13
有時候會,但有時候並不會。我總是選擇易於閱讀和理解的代碼。有時候這就是使用標籤的代碼。 – innaM 2009-10-28 09:44:09
Perl最佳實踐支持標籤。我不同意所有的PBP,但我認爲這是它的一個很好的建議。如果沒有別的,它們將作爲文檔。 – hobbs 2009-10-28 10:19:30