- 機(jī)構(gòu)級(jí)別:普通會(huì)員
- 信用等級(jí):
學(xué)校評(píng)價(jià)(我要提問/點(diǎn)評(píng))
- 學(xué)校被點(diǎn)評(píng):0 次
- 好評(píng)(0%)
- 中評(píng)(0%)
- 差評(píng)(0%)
資料認(rèn)證
未通過身份證認(rèn)證
未通過辦學(xué)許可認(rèn)證
- 學(xué)校瀏覽人次:次
- 加盟時(shí)間:2017年03月10日
西安尚學(xué)堂Java培訓(xùn)專家:代碼越少越干凈嗎?
在很多西安尚學(xué)堂Java培訓(xùn)專家的眼中對(duì)于干凈代碼的定義就是簡單、易于理解的代碼。不過分設(shè)計(jì),模板文件盡可能地少,語義明確。那么,這樣是否就意味著代碼越少越干凈呢?不盡然。大多數(shù)情況下,更少的代碼往往語義更模糊,更難理解(因此更難維護(hù))。
當(dāng)使用jBehave工作和測試元過濾時(shí),工程師寫了類似于下面的代碼:
1 2 3 4 5 6 7 8 |
public Embedder configuredEmbedder() { Embedder embedder = super.configuredEmbedder(); ignoreStoriesAndScenariosWithMetaInformationParameter(embedder, "ignore"); return embedder; } private void ignoreStoriesAndScenariosWithMetaInformationParameter(Embedder embedder, String ignoreParameter) { embedder.useMetaFilters(Arrays.asList("-" + ignoreParameter)); } |
在之后對(duì)這些代碼的討論中,其他工程師表示,可以刪除了一些“沒有必要”的私有方法,于是代碼變成了這樣:
1 2 3 4 5 6 |
@Override public Embedder configuredEmbedder() { Embedder embedder = super.configuredEmbedder(); embedder.useMetaFilters(Arrays.asList("-ignore")); return embedder; } |
顯然,方法更短,代碼更少了。對(duì)我們來說,使用這樣的類,或許能讓我們?cè)诠ぷ鲿r(shí)對(duì)這個(gè)方法所發(fā)生的變化一目了然。但是如果有新加入項(xiàng)目的人呢,并且這個(gè)人之前從未使用過jBehave呢?對(duì)他而言,長一點(diǎn)的代碼反而可以獲取更多的信息,即使他不知道jBehave是如何工作的,不清楚“元過濾器”是什么,不懂minus的意思——但是至少能理解我們想要實(shí)現(xiàn)的目標(biāo)。
通過添加注釋也可以達(dá)到相同的效果。可以通過注釋解釋元過濾器代碼和jBehave層文件之間的聯(lián)系。所以最后,代碼成了這樣的:
1 2 3 4 5 6 7 |
@Override public Embedder configuredEmbedder() { Embedder embedder = super.configuredEmbedder(); // ignore stories and scenarios with meta information parameter @ignore. embedder.useMetaFilters(Arrays.asList("-ignore")); return embedder; } |
可以通過討論具體的例子找到一種普遍的風(fēng)格。也許其他開發(fā)人員會(huì)因此而考慮他的代碼是否會(huì)給新加入的同事帶來困惑,從而去添加注釋,而不是將方法縮成減一行代碼。
結(jié)論
干凈的代碼并不總意味著更少的代碼。所以,需要在編寫更多的小方法和縮減代碼行數(shù)之間權(quán)衡得失。