国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當前位置:首頁 > 科技  > 軟件

手把手教你,如何先梳理業務邏輯再寫代碼

來源: 責編: 時間:2023-09-18 21:40:53 419觀看
導讀一、業務邏輯與代碼代碼是需求邏輯的一種展現形式:需求文檔是業務邏輯的一種展現形式,而代碼不過是業務邏輯的另一種表現形式;如果邏輯本身有問題,那么它的各種展示形式自然也是錯的,所以寫代碼前應該先思考清楚業務邏輯。

一、業務邏輯與代碼

  • 代碼是需求邏輯的一種展現形式:需求文檔是業務邏輯的一種展現形式,而代碼不過是業務邏輯的另一種表現形式;如果邏輯本身有問題,那么它的各種展示形式自然也是錯的,所以寫代碼前應該先思考清楚業務邏輯。
  • Review代碼很多時候是邏輯問題:在Review代碼經驗中發現:混亂的代碼并不僅僅是代碼編寫技藝問題,很多時候是因為邏輯沒有梳理清楚。邏輯混亂,自然代碼也混亂。梳理清楚業務邏輯,就為代碼打下了良好的基礎。當然業務邏輯梳理清楚后,業務邏輯到代碼的映射依然有可能出問題,這是編程技藝要解決的問題。下面通過一個簡單的例子來演示這個過程:

gKi28資訊網——每日最新資訊28at.com

二、業務需求示例

我們要做一件事情doSomething:gKi28資訊網——每日最新資訊28at.com

  • 第一步先做 A,A 過程要先執行 a1, 然后執行 a2, 然后執行 a3 這三個子過程。
  • 第二步再做 B,B 過程需要執行 b1,然后 b2 這兩個子過程。

這個示例邏輯的圖形表述如下:是一個樹,包含樹的根,枝干,和葉子。gKi28資訊網——每日最新資訊28at.com

gKi28資訊網——每日最新資訊28at.com

例子是有通用性的,現實世界的任何事情或業務都可以用類似的樹形結構來表述。gKi28資訊網——每日最新資訊28at.com

gKi28資訊網——每日最新資訊28at.com

三、正確的代碼實現

1. 和邏輯樹映射的代碼樹

正確的代碼結構應該是和邏輯映射的,代碼結構如下:gKi28資訊網——每日最新資訊28at.com

gKi28資訊網——每日最新資訊28at.com

我們真實寫代碼的時候,一般并不會直接寫出如上結構,而是會先寫出「3.2 代碼塊 + 注釋」的結構來。gKi28資訊網——每日最新資訊28at.com

2. 代碼塊 + 合理注釋

如下代碼通過代碼塊來映射邏輯,上面圖中的子方法對應代碼中的注釋。gKi28資訊網——每日最新資訊28at.com

void doSomething(){    //A    a1邏輯偽代碼.....;//a1    a2邏輯偽代碼.....;//a2    a3邏輯偽代碼.....;//a3    //B    b1邏輯偽代碼;//b1    b2邏輯偽代碼;//b2}

3. 抽取小方法

可以再上面的基礎上更優秀些,對代碼塊進行抽取小方法,更符合業務描述(更符合業務的樹形結構)。推薦閱讀:看看人家 SpringBoot + vue后臺管理系統,多么優雅...gKi28資訊網——每日最新資訊28at.com

void doSomething(){    doA();    doB();}void doA(){    a1邏輯偽代碼.....;    a2邏輯偽代碼.....;    a3邏輯偽代碼.....;}void doB(){    b1邏輯偽代碼;    b2邏輯偽代碼;}

當然你也可以繼續對 a1,a2,a3,b1,b2 等小邏輯映射為小方法,以上提到幾種寫法都是正確的,關于小方法是否抽取,后續單獨在《代碼長度與母語的關系》中討論。下面我們來看看不正確的寫法。gKi28資訊網——每日最新資訊28at.com

四、不正確的代碼實現 ===========

當你看到下面的不正確的寫法的時候,你也許會覺得不可思議,真的會寫出這樣的代碼?現實是:項目中我見到很多更糟糕的代碼,會把下面提到的問題,以及其他編程技藝的問題排列組合出現。gKi28資訊網——每日最新資訊28at.com

1. 第一種問題:不對等

第一種常見的問題不太嚴重,只對部分邏輯進行了抽取,造成方法中執行不對等;比如只對 b() 邏輯進行了抽取,但對等的 a()邏輯并未抽取;gKi28資訊網——每日最新資訊28at.com

gKi28資訊網——每日最新資訊28at.com

void doSomething(){   a1邏輯偽代碼.....;   a2邏輯偽代碼.....;   a3邏輯偽代碼.....;   doB();}void doB(){   b1邏輯偽代碼;   b2邏輯偽代碼;}

改進辦法參考上面第 3 部分正確的寫法,至少可以在doB();之前加空行,并對 a1,a2,a3 加個注釋,也會易讀很多(當然這是一種妥協寫法)。gKi28資訊網——每日最新資訊28at.com

void doSomething(){		//a邏輯    a1邏輯偽代碼.....;    a2邏輯偽代碼.....;    a3邏輯偽代碼.....;        //b邏輯    doB();}void doB(){    b1邏輯偽代碼;    b2邏輯偽代碼;}

2. 第二種問題:部分抽取

第二種是對整體的部分邏輯進行了抽取,這種方法很難命名,會給個詞不達意的名字,或使用整體的名字,這個就相對嚴重了,已經影響到了代碼閱讀和理解。gKi28資訊網——每日最新資訊28at.com

比如電腦是一個整體,可以命名是電腦;如果只給你一部分(CPU,主板,顯卡)怎么命名讓人能明白?電腦部分零件?但電腦部分零件并不能讓人明白,因為它不是一個邏輯主體。CPU 是一個邏輯主體,封裝了運算。gKi28資訊網——每日最新資訊28at.com

gKi28資訊網——每日最新資訊28at.com

如下圖,只對 a1,a2 進行了抽取,然后名字依然稱為 a,看到代碼會很疑惑,a3 明顯也屬于 a。gKi28資訊網——每日最新資訊28at.com

gKi28資訊網——每日最新資訊28at.com

void doSomething(){    doA();    a3邏輯偽代碼.....;    doB();}void doA(){    a1邏輯偽代碼.....;    a2邏輯偽代碼.....;}void doB(){    b1邏輯偽代碼;    b2邏輯偽代碼;}

3. 第三種問題:抽取錯誤

第三種是最嚴重的問題,抽取錯誤,和邏輯不匹配。gKi28資訊網——每日最新資訊28at.com

如下:把 A 的部分邏輯和 B 的部分邏輯一起抽取。gKi28資訊網——每日最新資訊28at.com

如果在這個基礎上再對抽取的部分起個晦澀的名字(其實這種抽取也起不到好名字),然后應用一些設計模式來把代碼更分散(缺點隱藏起來),就成功的完成了只有自己可以看懂的代碼(可能表面看起來還很高大上)。gKi28資訊網——每日最新資訊28at.com

gKi28資訊網——每日最新資訊28at.com

由此得出結論,先別想著抽取小方法或應用設計模式。先能平鋪直敘的寫出符合邏輯的代碼吧。gKi28資訊網——每日最新資訊28at.com

小方法抽取和設計模式不一定能解決問題,也能隱藏問題。gKi28資訊網——每日最新資訊28at.com

gKi28資訊網——每日最新資訊28at.com

很多難以讀懂的代碼都是受《重構》和《設計模式》的包裝,質量差的代碼不可怕,如果再抽取和包裝,可以想想是多恐怖。gKi28資訊網——每日最新資訊28at.com

五、補丁和模式思考

(1) 補丁代碼思考,代碼的腐爛gKi28資訊網——每日最新資訊28at.com

很多人看到這里,會覺得自己絕對不會寫出這么爛的代碼;確實一開始也許不會,但伴隨新需求,不同人不斷打補?。榱瞬挥绊懢€上,老代碼不讓動),最后就會演進未這幾個問題綜合展現的代碼。閱讀這樣的代碼不看到最底層代碼,根本不知道代碼在做什么,因為方法名已經不可信。gKi28資訊網——每日最新資訊28at.com

(2) 不要急于使用設計模式,寫好基礎代碼gKi28資訊網——每日最新資訊28at.com

寫出一個好的基礎代碼的過程:先梳理清楚邏輯樹(樹形結構,同層對等),然后做到代碼符合邏輯樹(代碼樹自然也符合樹形結構,同層的方法對等)。gKi28資訊網——每日最新資訊28at.com

打好基礎后,可以再針對基礎代碼的痛點,應用復雜手段(比如設計模式)來解決,關于方法抽取和方法長度,后續單獨文章討論。gKi28資訊網——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-10436-0.html手把手教你,如何先梳理業務邏輯再寫代碼

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 提升代碼效率:掌握Python中并行for循環從入門到精通

下一篇: Java開發必安裝插件-Maven Helper

標簽:
  • 熱門焦點
  • 如何通過Python線程池實現異步編程?

    線程池的概念和基本原理線程池是一種并發處理機制,它可以在程序啟動時創建一組線程,并將它們置于等待任務的狀態。當任務到達時,線程池中的某個線程會被喚醒并執行任務,執行完任
  • 一個注解實現接口冪等,這樣才優雅!

    場景碼猿慢病云管理系統中其實高并發的場景不是很多,沒有必要每個接口都去考慮并發高的場景,比如添加住院患者的這個接口,具體的業務代碼就不貼了,業務偽代碼如下:圖片上述代碼有
  • JVM優化:實戰OutOfMemoryError異常

    一、Java堆溢出堆內存中主要存放對象、數組等,只要不斷地創建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • 自律,給不了Keep自由!

    來源 | 互聯網品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時不好說,但大概率不能給Keep自由。近日,全球最大的在線健身平臺Keep正式登陸港交所,努力
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的“網紅”。7月5日至9日,為期5天的東方甄選“甘肅行”首次在自有App內直播,
  • 華為Mate 60保護殼曝光:碩大后置相機模組 凸起程度有驚喜

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • AI芯片初創公司Tenstorrent獲三星和現代1億美元投資

    Tenstorrent是一家由芯片行業資深人士Jim Keller領導的加拿大初創公司,專注于開發人工智能芯片,該公司周三表示,已經從現代汽車集團和三星投資基金等
  • Windows 11發布,微軟一改往常對老機型開放的態度

    距離 Windows 11 發布已經過去一周,在過去一周里,很多數碼愛好者圍繞其對 Android 應用的支持、對老機型的升級問題展開了激烈討論。與以往不同的是,在這次大
  • 親歷馬斯克血洗Twitter,硅谷的苦日子在后頭

    文/劉哲銘  編輯/李薇  馬斯克再次揮下裁員大刀?! ∶绹鴷r間11月14日,Twitter約4400名外包員工遭解雇,此次被解雇的員工的主要工作為內容審核等。此前,T
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
成人国产精品免费网站| 久久精品亚洲精品国产欧美kt∨| 日本vs亚洲vs韩国一区三区二区 | 中文一区在线| 亚洲激情男女视频| 好吊日精品视频| 日韩国产一二三区| 精品视频在线免费| 99久久精品国产网站| 亚洲综合在线观看视频| 欧美日韩一区成人| 亚洲精品乱码| www.亚洲激情.com| 亚洲 欧美综合在线网络| 777xxx欧美| 久久久蜜桃一区二区人| 国产精品一级黄| 亚洲免费在线看| 91 com成人网| 一本一本大道香蕉久在线精品 | 伊人色综合久久天天五月婷| 国产在线播精品第三| 中文字幕二三区不卡| 在线播放亚洲一区| 性欧美xxxx大乳国产app| 韩国亚洲精品| 欧美日韩理论| 北岛玲一区二区三区四区| 精品在线视频一区| 午夜精品久久久久| 亚洲成国产人片在线观看| 成人欧美一区二区三区小说| 亚洲免费伊人电影| 国产精品网站在线观看| 久久婷婷成人综合色| 欧美精品一区二区在线观看| 欧美日韩国产区一| 91久久免费观看| 美女诱惑一区| 欧美性猛交xxxx乱大交退制版| 999亚洲国产精| av不卡免费看| 噜噜噜久久亚洲精品国产品小说| 亚洲国产导航| 国产精品日韩高清| 欧美大片免费久久精品三p| 欧美日韩一区成人| 久久五月激情| 在线成人av影院| 国产日韩av一区二区| 中文字幕中文字幕一区二区 | 亚洲精品v日韩精品| 精品一区二区三区在线观看| 99久久综合99久久综合网站| 在线视频观看日韩| 5月丁香婷婷综合| 亚洲欧美视频在线观看| 国内外成人在线视频| 91视频精品在这里| 在线观看91视频| 国产欧美一区视频| 美洲天堂一区二卡三卡四卡视频 | 狠狠色丁香婷综合久久| 亚洲性感激情| 久久久噜噜噜| 欧美国产日本视频| 久久99最新地址| 国产日韩欧美三级| 国产精品亲子乱子伦xxxx裸| 五月婷婷另类国产| 欧美另类综合| 在线成人av网站| 美女一区二区在线观看| 欧美综合二区| 国产亚洲精品超碰| 91免费版pro下载短视频| 欧洲一区二区三区在线| 国产在线精品一区二区夜色 | eeuss鲁片一区二区三区在线看| 国产日韩亚洲| 亚洲精品日韩一| 激情六月综合| 亚洲日本电影在线| 黄色精品免费| 一区二区中文字幕在线| 欧美精品播放| 成人欧美一区二区三区1314| 亚洲最黄网站| 日本一不卡视频| 久久日韩精品| 国产一区二区美女| 国产亚洲精品bt天堂精选| 在线观看一区| 一区二区高清在线| 色吧成人激情小说| 成人免费视频一区二区| 国产精品无人区| 99综合精品| 久热成人在线视频| 久久久噜噜噜久噜久久综合| 免费国产一区二区| 韩国欧美一区二区| 国产精品天干天干在线综合| 国内不卡一区二区三区| 日本aⅴ精品一区二区三区| 国产网站一区二区三区| 国产一区二区三区成人欧美日韩在线观看| 亚洲欧美日韩国产成人精品影院| 毛片一区二区| 国模吧视频一区| 国产成人欧美日韩在线电影| |精品福利一区二区三区| 国产日韩欧美精品电影三级在线 | 91视频免费播放| 蜜桃视频第一区免费观看| 中文字幕日韩av资源站| 一本一本大道香蕉久在线精品| 狠狠综合久久| 国产精品v欧美精品v日韩精品 | 亚洲男同1069视频| 国产欧美精品一区二区色综合| 欧美乱妇15p| 色悠久久久久综合欧美99| 午夜精品亚洲| 91丨porny丨户外露出| 国产精品综合二区| 国产成人免费在线视频| 精品在线观看视频| 亚洲成av人片www| 亚洲成人av一区二区三区| 亚洲综合精品久久| 亚洲一级二级在线| 椎名由奈av一区二区三区| 亚洲三级在线观看| 丝袜亚洲另类丝袜在线| 午夜精品福利久久久| 亚洲成a人v欧美综合天堂下载| 亚洲三级电影网站| 亚洲午夜电影在线观看| 亚洲免费av高清| 亚洲图片欧美视频| 亚洲大尺度视频在线观看| 日韩在线a电影| 精品一区二区免费在线观看| 激情图片小说一区| 国产91色综合久久免费分享| 成人一二三区视频| 99久久久无码国产精品| 亚洲网友自拍| 色婷婷久久综合| 久久日一线二线三线suv| 成人欧美一区二区三区小说| 亚洲18色成人| 不卡视频免费播放| 国产日韩三区| 欧美变态tickle挠乳网站| 亚洲日本丝袜连裤袜办公室| 午夜精品久久一牛影视| 91在线你懂得| 久久久久.com| 精品少妇一区二区三区日产乱码 | 激情欧美一区二区| 欧美69wwwcom| 777a∨成人精品桃花网| 亚洲视频你懂的| 99精品视频在线观看| 欧美另类z0zxhd电影| 一级中文字幕一区二区| 亚洲激精日韩激精欧美精品| 欧美激情艳妇裸体舞| 午夜精品久久| 日本一区二区免费在线| 97久久精品人人做人人爽| 欧美精品久久一区二区三区| 捆绑变态av一区二区三区| 国产偷国产偷亚洲高清97cao| 国产精品久久久久久一区二区三区 | 国产传媒欧美日韩成人| 欧美精品日韩一区| 福利电影一区二区三区| 精品三级在线观看| 成人美女视频在线观看18| 欧美一区二区二区| 成熟亚洲日本毛茸茸凸凹| 欧美一区二区三区电影| 成人美女视频在线看| 精品国精品国产尤物美女| 欧美一区二区三区四区在线观看地址 | 欧美少妇一区二区| 国产精品一区二区黑丝| 在线播放/欧美激情| 国产精品一区二区久激情瑜伽| 日韩欧美一级二级三级久久久| 高清国产一区二区| 国产精品国产三级国产aⅴ中文| 91农村精品一区二区在线| 最近日韩中文字幕| 在线观看免费视频综合| 国产乱子伦视频一区二区三区| 久久久www免费人成精品|