精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何寫一個清晰明了的Bug

開發 前端
本文一開始介紹了if else泛濫后的問題。然后為你介紹了“一提二抽三組四模式”法則。我們的項目也是萬事萬物中的一部分,套用《規模》一書中的一段話:耗散力一直在持續且不可避免地做著功,這使得所有系統都將退化。

Bug是不可避免。但如何讓自己的Bug寫得清新脫俗,結構清楚則是需要我們不斷努力的。

如何寫一個清晰明了的Bug

在開始今天的話題之前,先拋出一個問題,代碼結構好是好事嗎?

代碼結構好事好事嗎?

 

如何寫一個清晰明了的Bug

該圖是我的票圈里一位兄弟轉發的。代碼結構好了,別人接手容易,反倒是寫得爛了,卻可以成為焦點。你咋一聽覺得這是什么神邏輯,雖然聽著有道理,但總感覺有點政治不正確。

這個是一個問題,很值得思考的問題。

寫程序,就是寫邏輯,邏輯最初的樣子,就是用if else來表達,事實上這就是我們描述這個世界的基本方式,if else。這兩個分支可以覆蓋一切情況。你能告訴我們還有if else之外的場景嗎?!

 

如何寫一個清晰明了的Bug

可以這么說,if else可以描述這個世界上所有的邏輯。

if else就是整個世界

你手握if else 兩個單詞,心想,產品你盡管提需求吧,這個世界上還有我if else解決不了的問題嗎。而且久而久之,你會發現寫代碼就是if else,整天就在if else兩個代碼塊里盤旋。

 

[[272489]]

慢慢的,你開始彷徨,開始思考人生,甚至懷疑人生,難道程序這么無聊嗎?if else 外加crud就可以解決一切?

編程屆兩大流派

這個還是要從理論說起,其實描述這個世界有兩種方式。一種是函數算法派,一種面向對象派。

 

如何寫一個清晰明了的Bug

而函數算法派其實就是if else派,這一派是一個古老的門派,他們圍繞著一個方法體(或者叫函數)就可以一直寫下去并且能解決問題。

而面向對象派則主張通過結構和組合的方式來解決問題,而不是圍繞著if else來搞事情。

可以毫不夸張的說,我們現如今絕大多數人也包括我本人在內,我們都還處于函數算法派,也就是if else派。至于面向對象這些東西,充其量注入的時候體會一下,或者在new的時候體會一下。其余時候我們都是在安靜的寫著if else。

然而if else最終讓我們走向不歸路。

前面我們說過if else可以覆蓋整個世界。但覆蓋范圍廣并不等于它明了。

 

如何寫一個清晰明了的Bug

開始的時候,你發現自己的if else異常明了和清晰。

 

如何寫一個清晰明了的Bug

直到后來,一步步,就變成下面這樣了:

 

如何寫一個清晰明了的Bug

直到后來,你開始懷疑人生,于是你決定去看一些技術書籍,讓自己的心靈重新洗滌一下,這樣第二天才能稍微平靜的面對昨日遺留的if else。

避免if else泛濫的四法則:一提二抽三組四模式

那么我們如何避免if else的過渡泛濫呢?我總結了一個法則:一提二抽三組四模式。

 

如何寫一個清晰明了的Bug

1、一提

以下的代碼我是從真實的項目代碼中摘取的。

bad case:

 

如何寫一個清晰明了的Bug

good case:

 

如何寫一個清晰明了的Bug

上面兩段代碼執行了相同的邏輯,但第一種層次更多,可讀性也差,這還是剛開始的代碼,隨著需求的不斷變化,這段代碼的層次結構最后就會變成一堆亂麻。這里其實并沒有用什么技術,就是簡單的對代碼邏輯路徑進行重新的編排,從而實現了代碼的整潔和更好的可讀性。

在if else的優化中,一個核心的思路就是:更少的縮進、更少的else。

上面重構后的代碼,你可以看到縮進線由三條變成了兩條,同時通過把異常場景的邏輯前提的方式去掉了else塊。異常場景邏輯一般指負向的條件,比如==null,notExist,XxxException等。理想的代碼,總是應該把這些異常情況,提前排除掉,然后才安心的去寫主業務邏輯。這樣你的代碼就會顯得層次分明。

 

如何寫一個清晰明了的Bug

理想的代碼應該有的樣子:

 

如何寫一個清晰明了的Bug

二抽

在有限代碼行數內通過第一個法則可以讓結構更加的清晰。當if中的代碼行數過多時,這會就需要把可以獨立成為方法的邏輯抽取成一個private的方法(也可以是public等),代碼過長時,我們總是需要這樣去做,這樣可以讓你的主方法就像一篇文章一樣具有可讀性。

 

如何寫一個清晰明了的Bug

依然是上面的forYes方法。我們把exist的邏輯單獨抽取了一個方法,同時又把主邏輯代碼也抽了一個方法,你會發現forYes1方法的代碼長度并沒有增加多少,依然保持的良好的可讀性。

三組

上面的第二法則是抽取一個private方法,還沒有出類。當我們抽取到一定地步,會發現適合單獨成類的時候,應該把之前的這些private方法移動到一個新的類中。這個就是第三法則:組合,通過組合的方式來構建你的邏輯。

 

如何寫一個清晰明了的Bug

 

如何寫一個清晰明了的Bug

 

如何寫一個清晰明了的Bug

四模式

在用完組合后,我們的代碼其實已經基本上比較清楚了。但為了讓我們的代碼更加的優雅,更上一個層次。有的場景下你需要使用到設計模式,設計模式被總結成為最佳實踐,不是僅僅用來寫框架用的,寫日常紛繁復雜的業務邏輯代碼也是需要設計模式的。

接下來我就以自己正在開發的項目中的場景為例,來說說如何使用設計模式改善你的既有代碼。

在項目中我們需要為審批工作流提供一個回調(callback)接口。審批流有不同的狀態,不同的狀態回調會執行不同的邏輯。在重構前的代碼大體是這樣的:

 

如何寫一個清晰明了的Bug

我們希望最終的樣子是這樣的:

 

如何寫一個清晰明了的Bug

首先新建一個State接口類:

 

如何寫一個清晰明了的Bug

然后新建三個實現狀態,分別是Yes,No和Cancel:

 

如何寫一個清晰明了的Bug

然后新建一個Context類:

 

如何寫一個清晰明了的Bug

然后,新建一個State工廠類:

 

如何寫一個清晰明了的Bug

改造完畢。通過上面的重構,我們使用了狀態模式和一點點工廠模式。最終callback方法就只需通過newInstance就可以找到具體狀態的回調邏輯,而以后即使狀態在不斷的增加的,你也只需新建一個新的實現狀態,然后注入工廠類中,做到了可插拔。值得注意的是,這里我們的state其實并沒有很好的被傳遞和持有,這很不“狀態”,這通過這樣的方式我們實現了對callback的重構,結構也更加的清晰了。總之,當你遇到業務需求的不斷變化,你需要找到一種合適的設計模式來hold住它,即使GOLF不能滿足你的需求,你也可以自己創造一個設計模式來讓你的代碼清晰易懂。

總結

本文一開始介紹了if else泛濫后的問題。然后為你介紹了“一提二抽三組四模式”法則。我們的項目也是萬事萬物中的一部分,套用《規模》一書中的一段話:耗散力一直在持續且不可避免地做著功,這使得所有系統都將退化。設計最為精巧的機器、最具創新組織力的公司、進化得最完美的生物都無法逃脫這一最為嚴酷的死神。耗散力就是一個系統運轉所產生的摩擦力,系統復雜性所帶來的無序熱量,你的代碼也一樣,也需要通過不斷的改進和重構來盡量的延緩和降低熵的增長。

最終我們都將屈服于各種形式的磨損和衰竭,熵能殺人,你需要吃飯!

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2018-01-29 21:56:28

Bug程序程序員

2022-10-08 00:06:00

JS運行V8

2012-07-11 23:26:10

bug測試

2025-06-26 00:40:13

2015-04-29 10:02:45

框架如何寫框架框架步驟

2017-08-21 16:36:12

語法樹AST解析器HTML5

2020-05-19 15:00:26

Bug代碼語言

2011-05-26 09:39:53

程序

2019-10-22 14:06:13

Docker軟件Linux

2019-10-23 05:08:55

docker網絡模式網絡協議

2017-08-10 14:55:33

前端JavaScript 函數

2009-09-14 17:08:02

WebFormView

2025-02-13 07:00:00

Dubbo-goJava服務端

2013-12-10 09:50:03

技術技術博客

2021-10-08 07:50:57

軟件設計程序

2017-10-10 15:14:23

BUGiOS 11蘋果

2022-03-18 08:37:12

二分查找算法元素

2022-07-14 14:18:59

Kubernetes架構

2018-12-19 17:20:17

2022-02-28 08:07:17

Java開發
點贊
收藏

51CTO技術棧公眾號

中文字幕在线观看一区| 久久国产精品一区二区| 亚洲欧美中文日韩在线| 亚洲一区二区蜜桃| 欧美韩日亚洲| 国产日韩亚洲欧美综合| 91网站免费观看| 青青草国产在线观看| 欧洲亚洲一区二区三区| 欧美精品在线一区二区三区| 全黄性性激高免费视频| h视频在线免费| 国产成人免费av在线| 国产黑人绿帽在线第一区| 免费一级片在线观看| 精品国产精品久久一区免费式| 欧美一级久久久久久久大片| 97xxxxx| 在线看一级片| 亚洲国产精品传媒在线观看| 国产日韩欧美综合精品| 一级特黄色大片| 香蕉视频成人在线观看| 免费成人高清视频| 一二三四国产精品| 丝袜美腿一区二区三区动态图| 欧美丰满美乳xxx高潮www| 欧美性大战久久久久xxx | 999色成人| 色悠悠久久综合| a天堂资源在线观看| 免费a级毛片在线播放| 久久久午夜精品| 国模精品一区二区三区| 亚洲第一视频在线| 激情综合网最新| 国产精品亚洲视频在线观看| 亚洲天堂视频网站| 精品91久久久久| 欧美日韩成人黄色| 国产精品白嫩白嫩大学美女| 99久久夜色精品国产亚洲1000部| 一本色道久久综合狠狠躁篇的优点 | 内射一区二区三区| 综合色就爱涩涩涩综合婷婷| 亚洲精品在线一区二区| xxxx视频在线观看| 亚洲欧洲国产精品一区| 欧美一级xxx| 女人扒开双腿让男人捅| 日韩欧美另类中文字幕| 欧美成va人片在线观看| 日本泡妞xxxx免费视频软件| 日韩精品一区二区三区免费视频| 91精品国产黑色紧身裤美女| 91免费视频污| 麻豆视频久久| 日韩一区二区电影网| 国产精品嫩草影视| 美女国产精品久久久| 欧美第一区第二区| 国产精品手机在线观看| 色哟哟精品丝袜一区二区| 亚洲精品一区二区三区婷婷月| 偷拍女澡堂一区二区三区| 要久久电视剧全集免费| 亚洲一级片在线看| 天美传媒免费在线观看| 一个色综合网| 久久久久久com| 天天操天天摸天天干| 久久最新视频| 成人黄色片在线| 精品人妻少妇AV无码专区| 懂色av中文一区二区三区| 国产欧美日韩综合精品二区| 男男激情在线| 亚洲欧美怡红院| 国产成人生活片| heyzo在线播放| 在线亚洲+欧美+日本专区| 亚洲天堂2018av| 136福利精品导航| 精品视频久久久| 精品视频第一页| 激情视频一区| 国产精品爽爽爽| 视频在线99re| www.天天干.com| 99re成人精品视频| 日韩欧美国产二区| 91香蕉在线观看| 五月天一区二区三区| 成人黄色一区二区| 国产欧美视频在线| 日韩成人在线网站| 青青操在线播放| 亚洲高清毛片| 国产日韩精品入口| 乱精品一区字幕二区| 国产精品拍天天在线| 国产www免费| 欧美a一级片| 亚洲加勒比久久88色综合| 成人精品一二三区| 国产欧美一级| 95av在线视频| 第九色区av在线| 午夜私人影院久久久久| wwwwwxxxx日本| 亚洲日本三级| 欧美激情免费观看| 亚洲视频在线免费播放| 成人精品一区二区三区四区 | 丰满人妻一区二区三区四区53 | 亚洲精品按摩视频| 91视频综合网| 免费精品视频最新在线| 免费精品视频一区二区三区| 色呦呦在线播放| 欧美日产国产精品| 亚洲区免费视频| 99精品久久久| 国产成人精品免费视频大全最热| 在线免费观看的av网站| 色香蕉成人二区免费| 催眠调教后宫乱淫校园| 永久91嫩草亚洲精品人人| 国产精品久久久久影院日本| 亚洲欧洲国产综合| 亚洲免费电影在线| 天堂在线一区二区三区| 日韩理论电影大全| 国产精品国产福利国产秒拍| 欧美香蕉爽爽人人爽| 亚洲成av人**亚洲成av**| 九色91porny| 99久久夜色精品国产亚洲96| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 久草在现在线| 欧美性jizz18性欧美| 午夜视频在线观看国产| 国产在线不卡| 99视频在线播放| 在线免费观看的av| 日韩免费高清视频| 久久久久成人精品无码| 粉嫩aⅴ一区二区三区四区| 黄色成人在线免费观看| 亚洲精品一区在线| 久久免费观看视频| 天堂av2024| 欧美色播在线播放| xxx在线播放| 日本欧美在线看| 一个色的综合| 久久中文字幕一区二区| 欧美日韩高清区| 神马午夜电影一区二区三区在线观看| 亚洲综合久久av| 99re这里只有| 久久精品30| 亚洲第一导航| 伊人久久综合网另类网站| 美日韩在线视频| 丰满肉肉bbwwbbww| 欧美色欧美亚洲高清在线视频| 欧美 变态 另类 人妖| 日韩高清在线不卡| 在线国产伦理一区| 99a精品视频在线观看| 2019亚洲日韩新视频| 国产三级在线免费| 欧美高清视频不卡网| 日本一级二级视频| 9人人澡人人爽人人精品| 日本三级免费观看| 欧美电影一区| 国产精品精品软件视频| 九色porny丨入口在线| 亚洲精品自拍第一页| 国产影视一区二区| 亚洲成a人片综合在线| 西西444www无码大胆| 久久99精品久久久久久动态图| 嫩草影院中文字幕| 国产aⅴ精品一区二区三区久久| 国产狼人综合免费视频| 丁香花在线电影小说观看| 亚洲美女性生活视频| 国产精品久久久久毛片| 天天综合网天天综合色| 老司机福利在线观看| 国产白丝精品91爽爽久久| 久久久久久久久久久久久国产精品| 日韩综合在线| 国产综合av一区二区三区| 99只有精品| 97激碰免费视频| 日本精品在线| 亚洲人成在线播放| 精品国产18久久久久久| 91久久国产最好的精华液| 草视频在线观看| 中文字幕国产精品一区二区| 黄色国产在线视频| 精品中文av资源站在线观看| 青青视频在线播放| 欧美精品91| 亚洲图片都市激情| 伊人久久大香线蕉| 成人av片网址| 亚洲精品自拍| 国产精品久久二区| 中文字幕在线看片| 欧美久久精品一级黑人c片| 国产福利第一视频在线播放| 亚洲爱爱爱爱爱| a级片在线视频| 欧美日韩另类国产亚洲欧美一级| 69视频免费在线观看| 亚洲成av人综合在线观看| 欧美色图亚洲视频| 中文字幕一区三区| 91视频在线网站| 国产白丝精品91爽爽久久| 天天久久综合网| 久久国产福利国产秒拍| 成年网站在线播放| 日韩中文字幕一区二区三区| 91av资源网| 一区二区日本视频| 欧美精品久久久久久久久久久| 一区二区电影在线观看| 永久免费精品视频网站| 日韩专区精品| 一区二区三区的久久的视频| 成人午夜av| 涩涩日韩在线| 成人高清电影网站| 日本一区二区不卡高清更新| 欧美美乳视频| 日本一区高清不卡| 精品产国自在拍| 日本成人看片网址| 欧美理论视频| 亚洲精品高清视频| 日韩专区精品| 欧美一级黄色录像片| 欧美另类综合| 免费拍拍拍网站| 亚洲精品欧美| 阿v天堂2017| 欧美中文字幕| 亚洲欧美另类动漫| 美女在线观看视频一区二区| 久久撸在线视频| 国产呦萝稀缺另类资源| 北条麻妃亚洲一区| 成人午夜电影网站| 在线免费观看a级片| 91网站黄www| 国产又粗又猛又爽视频| 国产精品夫妻自拍| 欧美黄色aaa| 亚洲6080在线| 无码人妻久久一区二区三区不卡| 欧美三电影在线| 国产男男gay网站| 日韩欧美成人午夜| 人成免费电影一二三区在线观看| 亚洲欧美中文日韩在线| √天堂资源地址在线官网| 久久婷婷国产麻豆91天堂 | 国产91色在线免费| 看片一区二区| 国产精品中出一区二区三区| 亚洲警察之高压线| 亚洲最新在线| 亚洲国产免费看| 中文字幕国产传媒| 国产精品一区二区久久不卡 | 天堂av一区二区三区在线播放| 欧美精品人人做人人爱视频| 日韩在线视屏| 免费看毛片的网址| 青青草国产精品亚洲专区无| 可以看的av网址| 2022国产精品视频| 欧美在线视频第一页| 婷婷国产在线综合| 在线观看免费视频一区| 亚洲成年人影院在线| 草碰在线视频| 午夜精品美女自拍福到在线| 国产精品伦一区二区| 国产精品免费一区二区三区四区 | 不卡免费追剧大全电视剧网站| 少妇久久久久久久久久| 亚洲欧美日韩国产一区二区三区| 毛片毛片女人毛片毛片| 91麻豆精品国产自产在线观看一区 | 亚洲图中文字幕| 日本中文字幕中出在线| 国产91网红主播在线观看| 伊人久久亚洲| 在线视频欧美一区| 免费日韩精品中文字幕视频在线| 午夜xxxxx| 国产女人aaa级久久久级 | 欧美精品久久一区二区三区| 五月天激情开心网| 久久视频免费观看| 91p九色成人| 久久精品欧美| 亚洲天堂激情| 日本r级电影在线观看| 久久精品亚洲乱码伦伦中文| 精品无码av在线| 91精选在线观看| 9191在线| 国产91精品网站| 久久亚州av| 国产欧美精品aaaaaa片| 久久av资源站| 日本视频在线免费| 欧美午夜理伦三级在线观看| 你懂的在线观看视频网站| 久久久之久亚州精品露出| 麻豆国产一区| 艳母动漫在线免费观看| 日本一不卡视频| 国产一区二区三区精品在线| 欧美性猛交xxxx免费看漫画| 日韩性xxxx| 91极品视频在线| 国产精品网在线观看| 欧美一区二区三区综合| 国产精品99久久久| 少妇aaaaa| 在线播放91灌醉迷j高跟美女| 亚洲成a人v欧美综合天堂麻豆| 国产精品18久久久久久麻辣| 久久99高清| caoporn超碰97| 国产午夜精品在线观看| 波多野结衣绝顶大高潮| 在线播放精品一区二区三区 | 丝袜美女在线观看| 亚洲最大福利视频网站| 91成人网在线观看| 中文字幕一二三区| 一区av在线播放| 丰满肥臀噗嗤啊x99av| 午夜精品久久久久久久99黑人| 九色丨蝌蚪丨成人| 久久国产亚洲精品无码| 久久夜色精品一区| 樱花视频在线免费观看| 国产亚洲一区精品| 色噜噜成人av在线| 日日噜噜夜夜狠狠久久丁香五月| 国产精品综合二区| 国产精品第9页| 亚洲人成在线观看| 色综合一区二区日本韩国亚洲| 糖心vlog在线免费观看| 福利一区福利二区| 欧美性猛交bbbbb精品| 亚洲天堂成人在线视频| 色综合视频一区二区三区日韩| 欧美黄色免费网址| 99视频精品在线| 免费在线不卡av| 蜜臀久久99精品久久久久久宅男 | 在线观看亚洲欧美| 亚洲天堂成人在线| 麻豆国产一区二区三区四区| 国产不卡一区二区视频| 久久精品人人爽人人爽| 国产又大又粗又长| 久久久久久久色| jvid福利在线一区二区| 波多野结衣网页| 欧美性开放视频| 米奇精品一区二区三区| 国产精品播放| 青青青伊人色综合久久| 青娱乐av在线| 亚洲欧洲中文天堂| 国产美女亚洲精品7777| 免费黄色福利视频| 亚洲欧美乱综合| 日韩欧美在线番号| 91青草视频久久| 中国女人久久久| 久草福利资源在线| 日韩av综合网站| 免费一区二区三区在线视频| 久久精品午夜福利|