您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么理解web中整潔的類和函數(shù)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“怎么理解web中整潔的類和函數(shù)”吧!
言歸正傳,為什么函數(shù)要短小呢,如何才能是自己的函數(shù)更加短小?第一個(gè)問(wèn)題我也無(wú)法證明,只能告訴你短小的函數(shù)看起來(lái)更加清晰,更加容易理解。那怎么才能讓函數(shù)變得更加短小呢?很簡(jiǎn)單,抽離方法。將一些代碼抽離成另一個(gè)函數(shù)。什么樣的長(zhǎng)度才是合適的呢?我認(rèn)為不必過(guò)于追求短。這里的長(zhǎng)度我們可以以代碼塊的層來(lái)定義,對(duì)于下面這種代碼相信任何人看了都會(huì)崩潰吧。
public void doSomething() {
for() {
...
while() {
...
if() {
...
}else {
...
}
}
}
}
所以每個(gè)函數(shù)中有一層或兩層為最佳,每層代碼塊最好不超過(guò)3行。這是我認(rèn)為最佳的函數(shù)長(zhǎng)度,當(dāng)然,這個(gè)也可以根據(jù)個(gè)人習(xí)慣稍作調(diào)整。
只做一件事
如果說(shuō)長(zhǎng)度還可以根據(jù)個(gè)人習(xí)慣,那么“只做一件事”的要求應(yīng)該是大家都應(yīng)該遵守的公約了。如果一個(gè)函數(shù)中做了太多的事,那么代碼閱讀起來(lái)的難度將會(huì)成倍增加,而且文檔書(shū)寫(xiě)難度同樣增大。還有就是給其他代碼調(diào)用造成不便。比如我定義了函數(shù)A做了1和2兩件事,函數(shù)B想做2和3,怎么辦?這時(shí)B只能再寫(xiě)一遍A中做2的代碼。而這樣就會(huì)有大量重復(fù)代碼出現(xiàn),不但增加工作量,對(duì)日后的維護(hù)工作也造成很大的負(fù)擔(dān)。而把1和2分別定義為函數(shù)C和函數(shù)D的話,只需要在AB中分別調(diào)用就可以了。
命名
這里不多解釋,函數(shù)的命名需要具有描述意義,函數(shù)越短也就越容易描述。
函數(shù)參數(shù)
參數(shù)數(shù)量越少越好(這個(gè)我目前也沒(méi)有做到),究其原因,首先是讀代碼時(shí)每次都要搞清楚每個(gè)參數(shù)的意義,所以自然越少越好。另一方面就是為測(cè)試的同事提供方便,如果有多個(gè)函數(shù),測(cè)試的同學(xué)就需要考慮更多的測(cè)試用例對(duì)其進(jìn)行覆蓋。如果一個(gè)函數(shù)有3個(gè)以上的參數(shù),那測(cè)試的同學(xué)可能想要打人了。
使用異常代替返回錯(cuò)誤碼
這樣就可以將Try/catch代碼塊抽離出來(lái),因?yàn)門(mén)ry/catch代碼塊影響了正常程序的流程,看起來(lái)很丑陋。
函數(shù)的主要規(guī)則就是這些,那么如何才能寫(xiě)出這樣的函數(shù)呢?其實(shí)沒(méi)有什么特別的技巧,就是記住這些規(guī)則,在每次寫(xiě)完代碼之后再斟酌一番,對(duì)代碼進(jìn)行反復(fù)的打磨,修改不合適的命名,抽離冗長(zhǎng)的函數(shù)。久而久之,你的代碼一定會(huì)被人稱贊的。
說(shuō)完函數(shù)再來(lái)說(shuō)一下如何寫(xiě)好一個(gè)類。
還是短小
沒(méi)錯(cuò),類也應(yīng)該短小,不過(guò)這里短小的定義和函數(shù)短小的定義稍有不同,我們通常以“權(quán)責(zé)”來(lái)衡量。先看下面這個(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)該不算長(zhǎng),但是我要說(shuō),它仍然不滿足我們“短小”的條件,原因就是違反了單一權(quán)責(zé)原則。單一權(quán)責(zé)指的是一個(gè)類只描述一類事。上面這個(gè)類有對(duì)最后焦點(diǎn)組件的讀寫(xiě)方法,還有獲取版本號(hào)和序列號(hào)的方法。只要我們描述一個(gè)類時(shí),用到了類似于“還有”這樣的字眼時(shí),那么這個(gè)類就違反了單一權(quán)責(zé)原則,就需要對(duì)其中的方法進(jìn)行抽離。
為了修改而組織
大多數(shù)系統(tǒng)都會(huì)進(jìn)行持續(xù)的迭代,而這也意味著我們需要不斷對(duì)代碼進(jìn)行修改。而修改代碼往往伴隨著風(fēng)險(xiǎn)。所以,我們需要做的就是,修改一個(gè)方法時(shí),不對(duì)其他方法造成影響。當(dāng)我們開(kāi)始修改時(shí),就要評(píng)估好影響,然后將方法進(jìn)行抽象,拆分。力求做到每次修改都不影響其他類(即降低耦合)。
感謝各位的閱讀,以上就是“怎么理解web中整潔的類和函數(shù)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)怎么理解web中整潔的類和函數(shù)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。