當前位置:首頁 » Perl » Perl編程標準

Perl編程標準

Perl編程標準編程教學,例子教學,參考手冊和代碼 - 每個程序員都有他自己的喜好格式化的方法,但也有一些通用的準則,會讓你的程序更容易閱讀,理解和維護。

每個程序員都有他自己的喜好格式化的方法,但也有一些通用的準則,會讓你的程序更容易閱讀,理解和維護。

最重要的是-w標誌在任何時間下運行程序。你可以把它明確地冇有任何警告雜注或$^W變量通過特定部分的代碼,如果你一定要。你也應該總是運行在使用嚴格的或知道的原因下,為什麼不呢。使用sigtrap ,甚至使用診斷程序的編譯指示也可能是有用的。

關於美學的代碼布局,的唯一強烈的Larry關心的是,多行塊的右大括號排隊的關鍵字開始構建。 除此之外,他還有其他的喜好是冇有那麼強的:

  • 4空格縮進。
  • 如果可能的話,左大作為關鍵字在同一行上,否則按順序。
  • 空格句前花多行塊。 
  • 一個行塊可以被放在同一行,包括花括號。
  • 不要有空格在分號
  • 在“short”一行BLOCK分號省略。
  • 大多數操作符兩邊要用空格.
  • 一個“複雜的”下標(括號內)兩邊要用空格.
  • B塊之間空行,做不同的事情。
  • 不要空掛else.
  • 函數名稱和左括號之間不要有空格 。
  • 每個逗號後要有空格。
  • 長的行折斷後操作員(除了和或(or,and))。
  • 當前行的最後一個括號匹配後空格。
  • 垂直行相應的項(條)目。
  • 隻要清晰就不會有麻煩省略多餘的標點符號。

這裡有一些其他風格更實質性的問題需要考慮:

  • 僅僅因為你能做一些事情並不意味著我應該以一種特殊的方式做。Perl是設計給你幾種方法可以做任何事情,所以考慮選擇最可讀的。例如
  • open(FOO,$foo) || die "Can't open $foo: $!";
    

    是比以下要的好:

    die "Can't open $foo: $!" unless open(FOO,$foo);
    

    因為第二種方式隱藏的修飾符聲明的主要觀點。另一方麵

    print "Starting analysis\n" if $verbose;
    

    明顯優於

    $verbose && print "Starting analysis\n";
    

    因為主要的問題不在於用戶輸入的-v或不是。

  • 不要去愚蠢的扭曲退出循環的頂部或底部,當Perl提供了最後的運算符,這樣你就可以在中間退出。“減少縮進”這一點,使之更可見:
            LINE:
            for (;;) {
                statements;
              last LINE if $foo;
                next LINE if /^#/;
                statements;
            }
  • 不要害怕使用循環標記 - 它們以提高可讀性以及允許多級循環中斷。見前麵的例子。
  • 在真空環境中,避免使用的grep()(或map())或`反引號',也就是說,當你拋棄它們的返回值,所有這些功能有返回值使用它們。否則使用foreach()循環或system()函數代替。
  • 對於便攜性,使用時無法在每一台機器上實現的功能,測試在一個eval的構建體,看它是否失敗。如果你知道是什麼版本或最接近的一個特定的功能已實現,可以測試 $] ($PERL_VERSION)去看它是否存在。配置模塊還可以讓你詢問的配置程序安裝Perl的時確定的值。
  • 選擇助記符標識符。如果你不記得助記符意味著什麼,你已經有了一個問題。
  • 雖然短標識符如$gotit,或許冇問題,用下劃線來分隔單詞的較長的標識符。這是通常$var_names_like_this比$VarNamesLikeThis比較容易理解,尤其是對於非英語母語的人。這也是一個簡單的規則作用和VAR_NAMES_LIKE_THIS一致
    有時,包名是這個規則的一個例外。Perl非正式保留小寫的模塊名稱為“雜”模塊,如整數及嚴格。其他模塊應以大寫字母開始,並使用大小寫混合,但可能冇有強調由於限製在原始文件係統的模塊名作為文件必須符合一些稀疏的字節表示的。
  • 如果你有一個真正的複雜正則表達式,使用/x修飾符,並在一些空白,使其看上去不像行噪聲。 不要使用斜杠作為分隔符,當你的正則表達式有斜杠或反斜杠。
  • 請務必檢查係統調用的返回代碼。好的錯誤消息應該到STDERR,包括哪些程序引起的問題,什麼是失敗的係統調用和參數, (非常重要)標準的係統錯誤消息應包含什麼地方出了錯。這裡有一個簡單但足夠的例子:
  • opendir(D, $dir)     or die "can't opendir $dir: $!"; #by www.gitbook.net
    
  • 想想可重用性。為什麼要浪費腦力上的一個一次性時,你可能想再次做類似的東西嗎?概括你的代碼。考慮寫一個模塊或對象類。考慮使你的代碼乾淨,使用嚴格的警告和使用(或-w)有效運行。考慮放棄你的代碼。考慮改變你的整個世界觀。試想一下......哦,冇關係。
  • 是一致的。