<nav id="henky"></nav>
<li id="henky"></li>
  • <div id="henky"><span id="henky"></span></div>
    <div id="henky"><span id="henky"></span></div><li id="henky"><s id="henky"></s></li>
  • 用動態語言編寫程序命名更重要
    責任編輯:icynet    瀏覽:1971次    時間: 2015-06-02 22:11:39      

    摘要:2013-11-07 HTML5中國 本文作者Cory House是一名軟件開發者,獨立顧問,熱衷于清潔代碼、務實開發和響應式本土UI的設計。在文章里,他列舉了以java script和C#為例,來說明編程里命名的重要性以及必要性。 大家都知道,良好的變量名和優秀的功能在所有的編程語言..

    分享到:

    2013-11-07 HTML5中國

       本文作者Cory House是一名軟件開發者,獨立顧問,熱衷于清潔代碼、務實開發和響應式本土UI的設計。在文章里,他列舉了以java scriptC#為例,來說明編程里命名的重要性以及必要性。

       大家都知道,良好的變量名和優秀的功能在所有的編程語言里都是及其重要的,那么什么樣的命名足夠好、能足夠體現出重要性呢?有一位評論者覺得“Get”是一個很好的方式名稱,并以person.Get(personId)為例來說明他的觀點。雖說這個例子相當明了,但是這里仍有三點原因需要考證這么一個短小的功能名稱,尤其是在使用動態編程語言編寫的程序里,這樣的命名是否真的站得住腳呢?

    1. 強類型編程語言有助于傳達意圖

       首先,方法名在動態編程語言的作用比在類型語言里的作用要大。為什么,在強類型編程語言里,參數類型有助于傳達意圖。下面就引用java scriptC#為例:


       需要注意的是,在用C#語言的時候可能會涉及到的關于保真度的兩點額外事項:

    1.    參數類型——在這里你能看到一個類型的PersonIdint就是那個論點。

    2.    返回類型——很顯然該方法可以返回一個Person,而且用C#語言的時候沒必要通過閱讀方法體來知道這一點。

      這兩點信息有助于更清晰化軟件功能的意圖。因此,在強類型語言里,完全可以使用更簡潔的方法名。

    2. 使用情況

       對于像“Get”這樣的簡短方法名還會遇到第二個問題。當通過相同的數據類型有更多的方法可以獲得Person的話,那又會出現什么樣的情況呢?可以想象一下,如果我們創建一個新的功能之后就能通過用戶的電話號碼或社會保險號碼來獲得一個用戶。不過,在這方面方法名“Get”可能在業務上存有高風險。

       人們可能只是傳遞了一個手機號碼,但是沒有意識到這也有可能會透露出個人的PersonID。所以,你最好是將“Get”重命名為“GetByPersonId”,及時解決因簡短函數命名而引起的模棱兩可。這還沒有結束,因為這會導致下面的第三個問題。

    3. 重命名帶來的風險

       有的人可能會認為“GetByPersonId”應該在第一步就使用,而不是到了后面發現了問題才更改,尤其是在使用動態編程語言的情況下。于是,用動態編程語言編寫程序就能找到最終問題點:當你決定重新命名變量和函數后,強類別語言為了安全起見允許你依靠編譯器

    依靠編譯器可能會涉及以下兩個步驟:

    ·        改變一個聲明來引起編譯錯誤。

    ·        導航到這些錯誤并做出一點改變。

     

       你可以依靠這個編譯器在你的程序里做一些結構上的改變。——MichaelFeathers

         如果你使用的動態語言里缺乏支持性能的話,這無疑會增加重命名帶來的風險。這也就是為什么一個強有力的測試套件在動態語言里尤為重要的原因——它可以幫助臨時替代簡單的、不好的參照問題,主要是由于編譯器在強類型語言里根本抓不到這些參照問題。

       綜上所述,要想實現并不是很難,底線是我們生活在一個智能感知、高分辨率、便宜的存儲的世界。所以一旦到了必須選擇什么樣命名的時候,清潔代碼程序員應該大膽直面程序的清潔度而不僅僅是追求代碼的簡短性。特別是在動態編程語言里,這個原則尤其重要。  


    】【打印繁體】【投稿】 【收藏】 【推薦】 【舉報】 【評論】 【關閉】【返回頂部
    發表評論
    帳  號: 密碼: (新用戶注冊)
    驗 證 碼:
    表 情:
    內  容:
    發表評論
    用戶評價(0)

    暫時還沒有任何評論

    广西11选5