精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲国产成人久久综合| 99久久精品国产毛片| 日韩中文字幕av| 伊人精品视频在线观看| а√天堂资源地址在线下载| 国产精品一区三区| 国外色69视频在线观看| 日本精品久久久久中文| 成人av地址| 欧美日韩国产限制| 一区二区高清视频| 欧美特级特黄aaaaaa在线看| 日韩精品免费视频人成| 欧美成人h版在线观看| 欧美做受喷浆在线观看| 国产精品天堂蜜av在线播放 | 制服丝袜中文字幕亚洲| av女优在线播放| 日本在线天堂| 久久蜜桃一区二区| 69堂成人精品视频免费| 日韩精品一区二区亚洲av观看| 欧美激情日韩| 一区二区三区国产视频| 国产一卡二卡三卡四卡| 亚洲国产91视频| 欧美性xxxx在线播放| 免费的一级黄色片| 在线观看免费网站黄| 91污在线观看| 国产日韩欧美精品| 国产男男gay网站| 男女男精品视频| 秋霞成人午夜鲁丝一区二区三区| 福利所第一导航| 国产videos久久| 亚洲国产日韩精品在线| 一级黄色高清视频| 美女久久久久久| 在线观看欧美日本| 东京热加勒比无码少妇| 女人高潮被爽到呻吟在线观看| 一区二区三区在线播放| 中文字幕中文字幕在线中一区高清 | 亚洲精品国产成人| 国产艳妇疯狂做爰视频| 欧美1区2区3| 欧美一级午夜免费电影| 久久久久xxxx| 外国成人毛片| 欧美精品色综合| xxxx一级片| 欧美极品免费| 欧美在线免费播放| 免费观看成人网| 3d欧美精品动漫xxxx无尽| 色综合天天性综合| 黄页网站大全在线观看| sm在线播放| 欧美日韩激情网| 国产亚洲欧美在线视频| 欧美日韩国产观看视频| 无吗不卡中文字幕| 成人在线观看a| 欧美巨大丰满猛性社交| 色婷婷综合久久久中文一区二区 | 黄色激情在线播放| 婷婷综合久久一区二区三区| 国产av麻豆mag剧集| 性xxxxfreexxxxx欧美丶| 色天天综合久久久久综合片| 国产成人精品视频ⅴa片软件竹菊| 日韩av免费| 欧美浪妇xxxx高跟鞋交| 免费看三级黄色片| 欧美激情15p| 亚洲视频在线免费观看| 精品人体无码一区二区三区| 亚洲国产日韩欧美在线| 欧美劲爆第一页| 五月天激情四射| 蜜臀av性久久久久蜜臀aⅴ流畅 | 色中色在线视频| 久久久久久日产精品| 亚洲欧美影院| 欧美日韩色网| 一本色道久久加勒比精品| 亚洲最大综合网| 一区二区亚洲视频| 亚洲日本中文字幕| 国产一区二区三区在线视频观看| 雨宫琴音一区二区在线| 国产精品夫妻激情| 99免费在线视频| 91麻豆福利精品推荐| 在线观看一区欧美| 国产丝袜在线观看视频| 在线日韩一区二区| 日本wwwwwww| 成人久久久久| 国内久久久精品| 91精品国产综合久| 99综合电影在线视频| 视频在线观看成人| 国产经典三级在线| 欧美日韩精品一区二区三区蜜桃 | 久久久久久网站| 中文字幕 日韩有码| 成人精品视频一区二区三区尤物| 日本欧美精品久久久| 人交獸av完整版在线观看| 在线观看免费一区| 国产真实乱人偷精品| 亚洲国产老妈| 国产精品爽爽爽爽爽爽在线观看| 日韩在线观看视频一区二区三区| 一区在线观看免费| 十八禁视频网站在线观看| 亚洲国产一区二区三区网站| 一区二区三区精品99久久| 日韩欧美三级在线观看| 国产一区中文字幕| 性高潮久久久久久久久| 性孕妇free特大另类| 精品国产99国产精品| 五月天色婷婷丁香| 奇米777欧美一区二区| 欧美凹凸一区二区三区视频| www中文字幕在线观看| 日韩一区二区免费视频| 亚洲一二三四五六区| 日本午夜精品视频在线观看 | 欧美性极品xxxx娇小| 午夜精品福利久久久| 久久国产精品 国产精品| 污视频在线看网站| 88在线观看91蜜桃国自产| 国产激情av在线| 久久蜜桃精品| 蜜桃999成人看片在线观看| 丁香花视频在线观看| 欧美成人乱码一区二区三区| 全网免费在线播放视频入口| 精品一区二区三区av| 图片区小说区区亚洲五月| 性xxxxfreexxxxx欧美丶| 亚洲精品乱码久久久久久按摩观| 亚洲精品午夜久久久久久久| 成人在线视频一区二区| 久久久无码中文字幕久...| 最新亚洲国产| 久久成人av网站| 99久久久无码国产精品免费| 亚洲黄网站在线观看| 极品人妻一区二区| 国产精品久久| 国产精品久久国产精品| 最爽无遮挡行房视频在线| 日韩视频免费观看高清完整版 | 无码av中文一区二区三区桃花岛| 妖精视频一区二区| 日韩视频二区| 蜜桃视频在线观看成人| 欧美电影h版| 一区二区在线免费视频| 一区二区三区黄色片| 亚洲乱码中文字幕| wwwxx日本| 国产精品入口66mio| 欧美一区二区视频17c| 99九九久久| 欧美成人精品在线视频| 老熟妇高潮一区二区高清视频| 午夜欧美在线一二页| 丝袜美腿中文字幕| 麻豆免费看一区二区三区| 中文字幕色一区二区| 亚洲图色一区二区三区| 2023亚洲男人天堂| 在线观看免费黄视频| 欧美mv和日韩mv国产网站| 国产成人无码精品亚洲| 国产欧美日韩亚州综合| 欧美视频亚洲图片| 亚洲激情专区| 性欧美精品一区二区三区在线播放 | 视频在线观看国产精品| 亚洲天堂av免费在线观看| 国产精品chinese在线观看| 日本久久久久久久久| 国产写真视频在线观看| 日韩精品视频在线观看免费| 一卡二卡在线视频| 五月婷婷久久综合| 人妻无码一区二区三区免费| 成人一区二区视频| 无码无遮挡又大又爽又黄的视频| 亚洲天天影视网| 麻豆av一区二区| 精品久久亚洲| 日韩美女视频免费在线观看| av免费网站在线观看| 亚洲人成在线观看网站高清| 99免费在线视频| 欧洲精品一区二区| 国产网友自拍视频| 国产精品久久久久精k8| 朝桐光av一区二区三区| 国产在线精品一区在线观看麻豆| av天堂永久资源网| 国自产拍偷拍福利精品免费一| 视频在线精品一区| 欧美日韩一区二区三区四区不卡 | 成人网18免费网站| 国产高清精品一区二区| 欧美大陆国产| 国产999精品久久久| 999福利在线视频| 中文字幕亚洲国产| 青青久草在线| 亚洲成人黄色网| av老司机久久| 在线不卡一区二区| 中国一级片黄色一级片黄| 亚洲18色成人| 久久久久性色av无码一区二区| 国产精品高潮呻吟久久| 中文字幕第20页| 26uuu另类欧美亚洲曰本| 国产伦理在线观看| 国产乱码精品一区二区三区忘忧草| 乱子伦视频在线看| 亚洲激情国产| 男女超爽视频免费播放| 一区在线免费观看| 欧美精品在欧美一区二区| 午夜精品毛片| 在线播放 亚洲| 99视频精品全国免费| 夜夜爽www精品| 国产高清一区| 欧美 日韩 国产 在线观看 | 精品国产一区二区三区在线观看| 国产永久av在线| 亚洲一区二区精品| 国产精品久久久久一区二区国产| 亚洲美女视频网站| 你懂的在线播放| 亚洲一级黄色片| 午夜国产福利在线| xvideos亚洲人网站| 麻豆免费在线视频| 久久亚洲精品小早川怜子66| 国产精品扒开做爽爽爽的视频| 久久精品小视频| 三级资源在线| 97视频色精品| 亚洲欧美se| 国产精品高清在线| 95精品视频| 97se亚洲综合在线| 国产+成+人+亚洲欧洲在线| 国产综合色一区二区三区| 日韩欧美ww| 色一情一区二区三区四区| 99国产精品一区二区| 青青草综合在线| 日韩视频一区二区三区在线播放免费观看 | 中文字幕在线永久| 久久色成人在线| 很污很黄的网站| 一区二区视频免费在线观看| 日韩成人免费在线观看| 色综合久久天天| 国产又大又黑又粗| 精品成人a区在线观看| 男人的天堂在线| 日韩一区二区在线视频| 欧洲性视频在线播放| 国产成人精品视| 亚洲18在线| 激情一区二区三区| 日本精品黄色| 福利在线一区二区| 久久在线精品| 麻豆精品国产传媒| 久久一区二区视频| 亚洲精品电影院| 欧美日韩在线影院| 国产精品久久久久久久久久久久久久久久久久| 日韩久久免费av| 狠狠v欧美ⅴ日韩v亚洲v大胸| 久久天堂av综合合色| 在线最新版中文在线| 91在线精品视频| 久久99国产成人小视频| 欧美 国产 精品| 日韩国产在线观看一区| 深夜视频在线观看| 国产精品丝袜在线| 奇米影视第四色777| 9191成人精品久久| 美州a亚洲一视本频v色道| 久久成人18免费网站| gogo亚洲高清大胆美女人体| 国产精品一区视频| 色欧美自拍视频| av在线播放亚洲| 另类成人小视频在线| 欧美图片一区二区| 亚洲成人动漫一区| 国产特黄一级片| 中文字幕一精品亚洲无线一区| 女厕盗摄一区二区三区| 成人激情直播| 欧美高清视频手机在在线| 男人操女人免费软件| 国产91精品一区二区麻豆网站| av资源在线免费观看| 日本高清免费不卡视频| 天天舔天天干天天操| 九九热精品在线| 国产精品99久久免费| 神马欧美一区二区| 久久久久看片| 亚洲精品成人无码熟妇在线| 亚洲成在人线在线播放| 国产白浆在线观看| 久久久999国产| 婷婷精品久久久久久久久久不卡| 日韩少妇中文字幕| 久久一区二区三区四区五区 | 国产女同无遮挡互慰高潮91| 欧美国产日本韩| 懂色av蜜臀av粉嫩av喷吹| 亚洲久久久久久久久久久| 三级中文字幕在线观看| 国产一区二区精品免费| 亚洲欧洲综合| 91玉足脚交白嫩脚丫| 亚洲va欧美va国产va天堂影院| 国内精品久久久久久久久久| 美日韩精品视频免费看| 精品久久国产一区| 国产性生活免费视频| 国产aⅴ精品一区二区三区色成熟| 国产高潮流白浆| 日韩欧美国产wwwww| 秋霞在线视频| 精品婷婷色一区二区三区蜜桃| 国产日韩精品视频一区二区三区| 亚洲精品乱码久久久久久蜜桃图片| 午夜欧美视频在线观看| 在线观看xxx| 日韩免费观看在线观看| 欧美一区2区| 中文av字幕在线观看| 亚洲精品综合在线| 韩国av免费在线观看| 98精品国产自产在线观看| 伊人久久大香线蕉无限次| 国产精品69页| 亚洲色图欧美偷拍| 亚洲av永久纯肉无码精品动漫| 久久久免费观看| 亚洲欧洲美洲国产香蕉| 免费看黄色一级大片| 亚洲视频在线观看一区| 亚洲av无码乱码国产精品久久| 韩国视频理论视频久久| 免费短视频成人日韩| 污污的网站18| 一二三区精品福利视频| 亚洲aⅴ乱码精品成人区| 国产精品88a∨| 91超碰成人| 国产精品无码毛片| 欧美系列日韩一区| www.在线视频| 蜜桃av色综合| 精品无人码麻豆乱码1区2区| 69精品久久久| 中文字幕亚洲综合久久| 6080成人| 亚洲无吗一区二区三区| 玉米视频成人免费看| 青青草观看免费视频在线| 成人免费观看a| 999亚洲国产精| 久久av红桃一区二区禁漫| 亚洲大尺度美女在线| 777午夜精品电影免费看| 国产精品日韩三级| 久久久亚洲高清| 亚洲狼人综合网| 国产一区深夜福利| 国产亚洲激情| 欧美日韩中文字幕在线观看| 国产亚洲精品久久久久久777| 亚洲精品在线播放|