亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解web中整潔的類和函數

發布時間:2021-11-17 14:41:51 來源:億速云 閱讀:105 作者:iii 欄目:大數據

這篇文章主要講解了“怎么理解web中整潔的類和函數”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么理解web中整潔的類和函數”吧!

言歸正傳,為什么函數要短小呢,如何才能是自己的函數更加短小?第一個問題我也無法證明,只能告訴你短小的函數看起來更加清晰,更加容易理解。那怎么才能讓函數變得更加短小呢?很簡單,抽離方法。將一些代碼抽離成另一個函數。什么樣的長度才是合適的呢?我認為不必過于追求短。這里的長度我們可以以代碼塊的層來定義,對于下面這種代碼相信任何人看了都會崩潰吧。

public void doSomething() {
   for() {
       ...
       while() {
           ...
           if() {
               ...
           }else {
               ...
           }
       }
   }
}

所以每個函數中有一層或兩層為最佳,每層代碼塊最好不超過3行。這是我認為最佳的函數長度,當然,這個也可以根據個人習慣稍作調整。

只做一件事

如果說長度還可以根據個人習慣,那么“只做一件事”的要求應該是大家都應該遵守的公約了。如果一個函數中做了太多的事,那么代碼閱讀起來的難度將會成倍增加,而且文檔書寫難度同樣增大。還有就是給其他代碼調用造成不便。比如我定義了函數A做了1和2兩件事,函數B想做2和3,怎么辦?這時B只能再寫一遍A中做2的代碼。而這樣就會有大量重復代碼出現,不但增加工作量,對日后的維護工作也造成很大的負擔。而把1和2分別定義為函數C和函數D的話,只需要在AB中分別調用就可以了。

命名

這里不多解釋,函數的命名需要具有描述意義,函數越短也就越容易描述。

函數參數

參數數量越少越好(這個我目前也沒有做到),究其原因,首先是讀代碼時每次都要搞清楚每個參數的意義,所以自然越少越好。另一方面就是為測試的同事提供方便,如果有多個函數,測試的同學就需要考慮更多的測試用例對其進行覆蓋。如果一個函數有3個以上的參數,那測試的同學可能想要打人了。

使用異常代替返回錯誤碼

這樣就可以將Try/catch代碼塊抽離出來,因為Try/catch代碼塊影響了正常程序的流程,看起來很丑陋。

函數的主要規則就是這些,那么如何才能寫出這樣的函數呢?其實沒有什么特別的技巧,就是記住這些規則,在每次寫完代碼之后再斟酌一番,對代碼進行反復的打磨,修改不合適的命名,抽離冗長的函數。久而久之,你的代碼一定會被人稱贊的。

說完函數再來說一下如何寫好一個類。

還是短小

沒錯,類也應該短小,不過這里短小的定義和函數短小的定義稍有不同,我們通常以“權責”來衡量。先看下面這個類。

public class SuperDashboard extends JFrame implements MetaDataUser {
   public Component getLastFocusedComponent()
   public void setLastFocused(Component lastFocused)
   public int getMajorVersionNumber()
   public int getMinorVersionNumber()
   public int getBuildNumber()
}

這個類只提供了5個方法,應該不算長,但是我要說,它仍然不滿足我們“短小”的條件,原因就是違反了單一權責原則。單一權責指的是一個類只描述一類事。上面這個類有對最后焦點組件的讀寫方法,還有獲取版本號和序列號的方法。只要我們描述一個類時,用到了類似于“還有”這樣的字眼時,那么這個類就違反了單一權責原則,就需要對其中的方法進行抽離。

為了修改而組織

大多數系統都會進行持續的迭代,而這也意味著我們需要不斷對代碼進行修改。而修改代碼往往伴隨著風險。所以,我們需要做的就是,修改一個方法時,不對其他方法造成影響。當我們開始修改時,就要評估好影響,然后將方法進行抽象,拆分。力求做到每次修改都不影響其他類(即降低耦合)。

感謝各位的閱讀,以上就是“怎么理解web中整潔的類和函數”的內容了,經過本文的學習后,相信大家對怎么理解web中整潔的類和函數這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

web
AI

加查县| 右玉县| 乐陵市| 青海省| 贵南县| 永福县| 阿尔山市| 林周县| 仙居县| 台北县| 三穗县| 藁城市| 汉川市| 从江县| 孟连| 洮南市| 探索| 乌兰察布市| 瑞金市| 崇阳县| 万宁市| 万盛区| 广元市| 上林县| 绥宁县| 茌平县| 遵化市| 大竹县| 松溪县| 顺平县| 武功县| 南乐县| 吕梁市| 丹棱县| 大连市| 平江县| 玛纳斯县| 三台县| 夏河县| 池州市| 陆川县|