日本在线免费视频,国产精品视频2020,亚洲一区二区色,亚洲精品在线播放

淘寶代碼怎么用 最新揭秘淘寶代碼換標(biāo)題技術(shù)

今天王亞軍給大家?guī)砹诉@篇淘寶代碼怎么用,揭秘淘寶代碼換標(biāo)題技術(shù)干貨,以及關(guān)于淘寶代碼等等一系列的相關(guān)事項,這些其實都是一些必備知識,只是有些時候我們沒有遇到就沒有去了解而已!

顯然,這個問題并沒有唯一的標(biāo)準(zhǔn)答案,誰都可以談?wù)撟约旱睦斫猓裉煺務(wù)勎覍τ诤么a的理解。

一句話概括

衡量代碼質(zhì)量的唯一有效標(biāo)準(zhǔn):WTF/min —— Robert C. Martin

淘寶代碼怎么用,揭秘淘寶代碼換標(biāo)題技術(shù),淘寶代碼

Bob大叔對于好代碼的理解非常有趣,對我也有很大的啟發(fā)。我們編寫的代碼,除了用于機器執(zhí)行產(chǎn)生我們預(yù)期的效果以外,更多的時候是給人讀的,這個讀代碼的可能是后來的維護人員,更多時候是一段時間后的作者本人。

我敢打賭每個人都遇到過這樣的情況:過幾周或者幾個月之后,再看到自己寫的代碼,感覺一團糟,不禁懷疑人生。

我們自己寫的代碼,一段時間后自己看尚且如此,更別提拿給別人看了。

任何一個傻瓜都能寫出計算機可以理解的代碼。唯有寫出人類容易理解的代碼,才是優(yōu)秀的程序員。—— Martin Fowler

所以,談到好代碼,首先跳入自己腦子里的一個詞就是:整潔

好的代碼一定是整潔的,給閱讀的人一種如沐春風(fēng),賞心悅目的感覺。

整潔的代碼如同優(yōu)美的散文。—— Grady Booch

好代碼的特性

很難給好的代碼下一個定義,相信很多人跟我一樣不會認(rèn)為整潔的代碼就一定是好代碼,但好代碼一定是整潔的,整潔是好代碼的必要條件。整潔的代碼一定是高內(nèi)聚低耦合的,也一定是可讀性強、易維護的。

高內(nèi)聚低耦合

高內(nèi)聚低耦合幾乎是每個程序員員都會掛在嘴邊的,但這個詞太過于寬泛,太過于正確,所以聰明的編程人員們提出了若干面向?qū)ο笤O(shè)計原則來衡量代碼的優(yōu)劣:

  • 開閉原則 OCP (The Open-Close Principle)
  • 單一職責(zé)原則 SRP (Single Responsibility Principle)
  • 依賴倒置原則 DIP (Dependence Inversion Principle)
  • 最少知識原則 LKP (Least Knowledge Principle)) / 迪米特法則 (Law Of Demeter)
  • 里氏替換原則 LSP (Liskov Substitution Principle)
  • 接口隔離原則 ISP (Interface Segregation Principle)
  • 組合/聚合復(fù)用原則 CARP (Composite/Aggregate Reuse Principle)

這些原則想必大家都很熟悉了,是我們編寫代碼時的指導(dǎo)方針,按照這些原則開發(fā)的代碼具有高內(nèi)聚低耦合的特性。換句話說,我們可以用這些原則來衡量代碼的優(yōu)劣。

但這些原則并不是死板的教條,我們也經(jīng)常會因為其他的權(quán)衡(例如可讀性、復(fù)雜度等)違背或者放棄一些原則。比如子類擁有特性的方法時,我們很可能打破里氏替換原則。再比如,單一職責(zé)原則跟接口隔離原則有時候是沖突的,我們通常會舍棄接口隔離原則,保持單一職責(zé)。只要打破原則的理由足夠充分,也并不見得是壞的代碼。

可讀性

代碼只要具有了高內(nèi)聚和低耦合就足夠好了嗎?并不見得,我認(rèn)為代碼還必須是易讀的。好的代碼無論是風(fēng)格、結(jié)構(gòu)還是設(shè)計上都應(yīng)該是可讀性很強的。可以從以下幾個方面考慮整潔代碼,提高可讀性。

命名

大到項目名、包名、類名,小到方法名、變量名、參數(shù)名,甚至是一個臨時變量的名稱,其命名都是很嚴(yán)肅的事,好的名字需要斟酌。

? 名副其實

好的名稱一定是名副其實的,不需要注釋解釋即可明白其含義的。

/**
 * 創(chuàng)建后的天數(shù)
 **/
 int d;

int daysSinceCreation;

后者比前者的命名要好很多,閱讀者一下子就明白了變量的意思。

? 容易區(qū)分

我們很容易就會寫下非常相近的方法名,僅從名稱無法區(qū)分兩者到底有啥區(qū)別(eg. getAccount()與getAccountInfo()),這樣在調(diào)用時也很難抉擇要用哪個,需要去看實現(xiàn)的代碼才能確定。

? 可讀的

名稱一定是可讀的,易讀的,最好不要用自創(chuàng)的縮寫,或者中英文混寫。

? 足夠短

名稱當(dāng)然不是越長越好,應(yīng)該在足夠表達其含義的情況下越短越好。

格式

良好的代碼格式也是提高可讀性非常重要的一環(huán),分為垂直格式和水平格式。

? 垂直格式

通常一行只寫一個表達式或者子句。一組代碼代表一個完整的思路,不同組的代碼中間用空行間隔。

public class Demo {
 @Resource
 private List handlerList;
 private Map handlerMap = new ConcurrentHashMap();
 @PostConstruct
 private void init() {
 if (!CollectionUtils.isEmpty(handlerList)) {
 for (Handler handler : handlerList) {
 handlerMap.put(handler.getType(), handler);
 }
 }
 }
 publicResult<Map> query(Long id, TypeEnum typeEnum) {
 Handler handler = handlerMap.get(typeEnum);
 if (null == handler) {
 return Result.returnFailed(ErrorCode.CAN_NOT_HANDLE);
 }
 return handler.query(id);
 }
}

如果去掉了空行,可讀性大大降低。

 public class Demo {
 @Resource
 private List handlerList;
 private Map handlerMap = new ConcurrentHashMap();
 @PostConstruct
 private void init() {
 if (!CollectionUtils.isEmpty(handlerList)) {
 for (Handler handler : handlerList) {
 handlerMap.put(handler.getType(), handler); } } }
 public Result<Map> query(Long id, TypeEnum typeEnum) {
 Handler handler = handlerMap.get(typeEnum);
 if (null == handler) {
 return Result.returnFailed(ErrorCode.CAN_NOT_HANDLE);
 }
 return handler.query(id); }
 }

類靜態(tài)變量、實體變量應(yīng)定義在類的頂部。類內(nèi)方法定義順序依次是:公有方法或保護方法 > 私有方法 > getter/setter 方法。

? 水平格式

要有適當(dāng)?shù)目s進和空格。

? 團隊統(tǒng)一

通常,同一個團隊的風(fēng)格盡量保持一致。集團對于 Java 開發(fā)進行了非常詳細(xì)的規(guī)范。

類與函數(shù)

? 類和函數(shù)應(yīng)短小,更短小

類和函數(shù)都不應(yīng)該過長(集團要求函數(shù)長度最多不能超過 80 行),過長的函數(shù)可讀性一定差,往往也包含了大量重復(fù)的代碼。

? 函數(shù)只做一件事(同一層次的事)

同一個函數(shù)的每條執(zhí)行語句應(yīng)該是統(tǒng)一層次的抽象。例如,我們經(jīng)常會寫一個函數(shù)需要給某個
DTO 賦值,然后再調(diào)用接口,接著返回結(jié)果。那么這個函數(shù)應(yīng)該包含三步:DTO 賦值,調(diào)用接口,處理結(jié)果。如果函數(shù)中還包含了 DTO
賦值的具體操作,那么說明此函數(shù)的執(zhí)行語句并不是在同一層次的抽象。

? 參數(shù)越少越好

參數(shù)越多的函數(shù),調(diào)用時越麻煩。盡量保持參數(shù)數(shù)量足夠少,最好是沒有。

注釋

? 別給糟糕的代碼加注釋,重構(gòu)他

注釋不能美化糟糕的代碼。當(dāng)企圖使用注釋前,先考慮是否可以通過調(diào)整結(jié)構(gòu),命名等操作,消除寫注釋的必要,往往這樣做之后注釋就多余了。

? 好的注釋提供信息、表達意圖、闡釋、警告

我們經(jīng)常遇到這樣的情況:注釋寫的代碼執(zhí)行邏輯與實際代碼的邏輯并不符合。大多數(shù)時候都是因為代碼變化了,而注釋并沒有跟進變化。所以,注釋最好提供一些代碼沒有的額外信息,展示自己的設(shè)計意圖,而不是寫具體如何實現(xiàn)。

? 刪除掉注釋的代碼

git等版本控制已經(jīng)幫我們記錄了代碼的變更歷史,沒必要繼續(xù)留著過時的代碼,注釋的代碼也會對閱讀等造成干擾。

錯誤處理

? 錯誤處理很重要,但他不能搞亂代碼邏輯

錯誤處理應(yīng)該集中在同一層處理,并且錯誤處理的函數(shù)最好不包含其他的業(yè)務(wù)邏輯代碼,只需要處理錯誤信息即可。

? 拋出異常時提供足夠多的環(huán)境和說明,方便排查問題

異常拋出時最好將執(zhí)行的類名,關(guān)鍵數(shù)據(jù),環(huán)境信息等均拋出,此時自定義的異常類就派上用場了,通過統(tǒng)一的一層處理異常,可以方便快速地定位到問題。

? 特例模型可消除異常控制或者 null 判斷

大多數(shù)的異常都是來源于NPE,有時候這個可以通過 Null Object 來消除掉。

? 盡量不要返回 null ,不要傳 null 參數(shù)

不返回 null 和不傳 null 也是為了盡量降低 NPE 的可能性。

如何判斷不是好的代碼

討論了好代碼的必要條件,我們再來看看好代碼的否定條件:什么不是好的代碼。Kent Beck 使用味道來形容重構(gòu)的時機,我認(rèn)為當(dāng)代碼有壞味道的時候,也代表了其并不是好的代碼。

代碼的壞味道

? 重復(fù)

重復(fù)可能是軟件中一切邪惡的根源。—— Robert C.Martin

Martin Fowler 也認(rèn)為壞味道中首當(dāng)其沖的就是重復(fù)代碼。

很多時候,當(dāng)我們消除了重復(fù)代碼之后,發(fā)現(xiàn)代碼就已經(jīng)比原來整潔多了。

? 函數(shù)過長、類過大、參數(shù)過長

過長的函數(shù)解釋能力、共享能力、選擇能力都較差,也不易維護。

過大的類代表了類做了很多事情,也常常有過多的重復(fù)代碼。

參數(shù)過長,不易理解,調(diào)用時也容易出錯。

? 發(fā)散式變化、霰彈式修改、依戀情結(jié)

如果一個類不是單一職責(zé)的,則不同的變化可能都需要修改這個類,說明存在發(fā)散式變化,應(yīng)考慮將不同的變化分離開。

如果某個變化需要修改多個類的方法,則說明存在霰彈式修改,應(yīng)考慮將這些需要修改的方法放入同一個類。

如果函數(shù)對于某個類的興趣高于了自己所處的類,說明存在依戀情結(jié),應(yīng)考慮將函數(shù)轉(zhuǎn)移到他應(yīng)有的類中。

? 數(shù)據(jù)泥團

有時候會發(fā)現(xiàn)三四個相同的字段,在多個類和函數(shù)中均出現(xiàn),這時候說明有必要給這一組字段建立一個類,將其封裝起來。

? 過多的 if…else 或者使用 switch

過多的 if…else 或者 switch ,都應(yīng)該考慮用多態(tài)來替換掉。甚至有些人認(rèn)為除個別情況外,代碼中就不應(yīng)該存在 if…else 。

總結(jié)

本文首先一句話概括了我認(rèn)為的好代碼的必要條件:整潔,接著具體分析了整潔代碼的特點,又分析了好代碼的否定條件:什么樣的代碼不是好的代碼。僅是本人的一些見解,希望對各位以后的編程有些許的幫助。

我認(rèn)為僅僅編寫出可運行的代碼是遠(yuǎn)遠(yuǎn)不夠的,還要時刻注意代碼的整潔度,留下一些漂亮的代碼,希望寫的代碼都能保留并運行 102 年!

后續(xù)增加一些實際的例子來說明好的和壞的代碼;分享下如何編寫整潔代碼——自己認(rèn)為有用的一些編程技巧。

今天就說到這里吧,希望可以在一定程度上幫幫你,如果你認(rèn)真看完了這篇淘寶代碼怎么用「最新揭秘淘寶代碼換標(biāo)題技術(shù)」文章,感覺自己收獲很多,可以收藏巢座耶學(xué)習(xí)網(wǎng)哈!

本文發(fā)布者:百事通,不代表巢座耶立場,轉(zhuǎn)載請注明出處:http://www.sdwldmy.com/p/10397.html

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 jubao226688#126.com 舉報,一經(jīng)查實,本站將立刻刪除。

(0)
上一篇 2023年8月11日 09:00
下一篇 2023年8月11日 09:14

相關(guān)推薦

  • 現(xiàn)在開嬰兒用品店賺錢嗎 推薦母嬰店開店流程分享

    小伙伴們你們好,楊翕羽很高興又和各位見面了,今天主要來講講現(xiàn)在開嬰兒用品店賺錢嗎,母嬰店開店流程分享,還有關(guān)于開嬰兒用品店賺錢嗎這些的內(nèi)容,想要做好首先一定要把基本功練好了,否者是很難持續(xù)提升的。 現(xiàn)在有很多老板都認(rèn)為如今的生意不好做。確實,如今的市場受到電商的影響,實體店想要賺錢的話,并不容易。可即使如此,也還是有一些實體店老板披荊斬棘,展現(xiàn)出自己異于常人…

    2023年7月10日
  • 學(xué)生開店做什么生意好 必看:教你新手開網(wǎng)店怎么入手

    大家好,今天吳天虞給大家講解下關(guān)于學(xué)生開店做什么生意好,教你新手開網(wǎng)店怎么入手的事情,以及關(guān)于學(xué)生開店等等一系列的相關(guān)事項,既然來了就別走了,好好的靜下心把這篇文章閱讀完相信你會有一定的收獲哦! 根據(jù)教育部的統(tǒng)計,2020年,全國普通高校畢業(yè)生874萬人,較去年增加40萬人。《中國大學(xué)生創(chuàng)業(yè)報告》數(shù)據(jù)顯示,2019年有超過75%的受訪在校大學(xué)生具有創(chuàng)業(yè)意愿。…

    2023年6月23日
  • 現(xiàn)在網(wǎng)上買護膚品安全嗎 新手必看:盤點補水口碑好的爽膚水

    大家好,今天馮寓鉀給大家講解下關(guān)于現(xiàn)在網(wǎng)上買護膚品安全嗎,盤點補水口碑好的爽膚水的事情,還有關(guān)于網(wǎng)上買護膚品安全嗎這些的精品干貨文章,經(jīng)過我各種整理總結(jié)之后,決定寫下這篇文章分享給大家。 現(xiàn)在網(wǎng)上買化妝品的渠道主要是兩個,一個是官網(wǎng),還有一個就是在各大網(wǎng)絡(luò)渠道的官方旗艦店。這里講一下這兩個渠道吧。 1.官網(wǎng) 官網(wǎng)購物的話和線下專柜差不多,基本都是品牌方運營的…

    2023年7月26日 ? 百科
  • 品牌化妝品進貨渠道有哪些 推薦新手開店必備貨源渠道

    今天鄭雅給大家?guī)砹诉@篇品牌化妝品進貨渠道有哪些,新手開店必備貨源渠道干貨,以及關(guān)于品牌化妝品進貨渠道這些的相關(guān)干貨,其實這個內(nèi)容對于新手來說還是挺重要的,因為涉及面很大。如果你認(rèn)真讀了,一定會有所收獲! 經(jīng)營化妝品店,產(chǎn)品是靈魂,效果是關(guān)鍵,因此一定要選擇正品,才能持續(xù)經(jīng)營與發(fā)展。那么,正品化妝品有哪些進貨渠道呢?一起來看一下吧。 眾所周知,經(jīng)營一家化妝品…

    2023年12月22日
  • 未來十年最值錢的證書是哪些「新手必看:適合女孩子業(yè)余考的證」

    大家好,今天尤文承給大家準(zhǔn)備的干貨是未來十年最值錢的證書是哪些,適合女孩子業(yè)余考的證,以及關(guān)于未來十年最值錢的證書等等一系列的相關(guān)事項,既然來了就別走了,好好的靜下心把這篇文章閱讀完相信你會有一定的收獲哦! 最值錢的的證書有哪些 一、國家司法考試 報名條件:高等院校法律專業(yè)本科畢業(yè),或者高等院校非法律專業(yè)本科畢業(yè),并具有法律專業(yè)知識。 考試科目:理論法學(xué)、應(yīng)…

    百科 2023年4月7日
  • 支付寶芝麻信用分怎么提高 附:95%的人靠這5招提分

    小伙伴們大家好,今天錢子騰講的文章是支付寶芝麻信用分怎么提高,95%的人靠這5招提分,以及芝麻信用分怎么提高相關(guān)的事項,思路很重要,希望我整理分享的這篇文章對你能有一定的幫助! 提起芝麻分,大家肯定都不陌生,尤其是隨著支付寶的發(fā)展,芝麻信用分也悄悄的變得強大起來了。較高的芝麻信用分可以幫助我們獲得更快、更多、更好的生活服務(wù)和金融服務(wù)體驗。 例如線上快速辦理信…

    2024年2月25日