怎么理解web中整潔的類和函數(shù)

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

創(chuàng)新互聯(lián)公司是專業(yè)的泗陽網(wǎng)站建設(shè)公司,泗陽接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行泗陽網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

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

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

所以每個(gè)函數(shù)中有一層或兩層為最佳,每層代碼塊最好不超過3行。這是我認(rèn)為最佳的函數(shù)長度,當(dāng)然,這個(gè)也可以根據(jù)個(gè)人習(xí)慣稍作調(diào)整。

只做一件事

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

命名

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

函數(shù)參數(shù)

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

使用異常代替返回錯(cuò)誤碼

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

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

說完函數(shù)再來說一下如何寫好一個(gè)類。

還是短小

沒錯(cuò),類也應(yīng)該短小,不過這里短小的定義和函數(shù)短小的定義稍有不同,我們通常以“權(quán)責(zé)”來衡量。先看下面這個(gè)類。

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

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

為了修改而組織

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

感謝各位的閱讀,以上就是“怎么理解web中整潔的類和函數(shù)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么理解web中整潔的類和函數(shù)這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

文章題目:怎么理解web中整潔的類和函數(shù)
網(wǎng)頁URL:http://muchs.cn/article24/ijdoce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站導(dǎo)航軟件開發(fā)、App設(shè)計(jì)網(wǎng)站維護(hù)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)