日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

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

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

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

一、業務邏輯與代碼

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

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

二、業務需求示例

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

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

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

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

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

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

三、正確的代碼實現

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

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

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

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

2. 代碼塊 + 合理注釋

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

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

3. 抽取小方法

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

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

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

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

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

1. 第一種問題:不對等

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

五、補丁和模式思考

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

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

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

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

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

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

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

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

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

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久久久久久97| 亚洲国产精品精华液2区45| 欧美激情第8页| 男女激情久久| 欧美日韩一区二区三区在线观看免| 欧美日韩免费一区| 国产精品一二三| 黄色精品在线看| 亚洲精品视频啊美女在线直播| 在线午夜精品| 久久精品免费播放| 欧美激情综合在线| 国产精品免费视频xxxx| 国内精品免费午夜毛片| 最新国产成人在线观看| 一区二区三区四区国产精品| 欧美一区二区视频97| 嫩草影视亚洲| 欧美性大战久久久久| 激情亚洲网站| 国产精品99久久久久久白浆小说| 欧美一区二区视频网站| 免费在线观看精品| 国产精品久久激情| 在线免费观看日韩欧美| 亚洲小说欧美另类婷婷| 久久女同互慰一区二区三区| 欧美日韩国产系列| 狠狠88综合久久久久综合网| 夜夜嗨av一区二区三区四区 | 欧美日韩国产精品| 国产视频一区三区| 日韩天堂在线视频| 久久久精彩视频| 亚洲视频大全| 久久久久九九九| 欧美视频在线观看一区二区| 激情小说亚洲一区| 午夜精品久久久99热福利| 农夫在线精品视频免费观看| 国产精品一区毛片| 日韩一区二区精品视频| 久久久久久久综合色一本| 欧美性久久久| 亚洲欧洲精品一区二区三区| 欧美一区二区| 欧美色精品在线视频| 亚洲国产合集| 久久av一区二区三区亚洲| 欧美三区在线| 亚洲欧洲精品一区二区三区不卡| 欧美在线一二三四区| 欧美性猛交一区二区三区精品| 亚洲国产成人tv| 久久av老司机精品网站导航 | 精品99视频| 欧美在线观看一区二区三区| 欧美色欧美亚洲高清在线视频| 亚洲激情不卡| 另类欧美日韩国产在线| 国产日韩在线一区二区三区| 亚洲一级在线观看| 欧美日韩三级| 亚洲国产小视频| 久久尤物视频| 国产一区二区中文字幕免费看| 亚洲欧美伊人| 国产精品欧美一区喷水 | 午夜欧美电影在线观看| 欧美三级在线| 99国产精品久久| 欧美激情视频在线播放 | 亚洲国产日韩一级| 久久在线91| 好看不卡的中文字幕| 久久精品30| 国内精品久久久久久 | 一区二区三区高清在线 | 日韩亚洲在线| 欧美精品国产一区二区| 亚洲激情亚洲| 欧美成人免费播放| 亚洲国产精品一区二区www| 裸体丰满少妇做受久久99精品 | 精品成人一区二区| 久久天天躁狠狠躁夜夜av| 狠狠色综合色综合网络| 久久久www成人免费无遮挡大片 | 91久久久亚洲精品| 欧美激情按摩在线| 日韩视频精品在线| 欧美日韩国产欧| 日韩视频在线永久播放| 欧美日韩国产一级| 亚洲视屏在线播放| 国产乱码精品一区二区三区av| 亚洲欧美日韩中文视频| 国产欧美日韩亚洲一区二区三区| 欧美一区2区视频在线观看 | 欧美少妇一区| 亚洲欧美国产另类| 国产视频久久网| 久久久久久久精| 在线精品视频一区二区三四| 欧美福利一区二区| 夜夜爽www精品| 国产精品久久一卡二卡| 欧美影院在线| 亚洲第一成人在线| 欧美日韩另类综合| 午夜精品久久久| 激情成人在线视频| 欧美黄免费看| 亚洲伊人伊色伊影伊综合网| 国产欧美一区二区色老头| 久久久爽爽爽美女图片| 亚洲精品黄网在线观看| 国产精品狠色婷| 久久精品成人| 亚洲毛片播放| 国产乱码精品一区二区三| 麻豆成人小视频| 一本色道88久久加勒比精品 | 影音欧美亚洲| 欧美日韩国产综合网| 羞羞答答国产精品www一本| 在线观看一区| 欧美三区在线视频| 久久久久网址| 欧美视频亚洲视频| 亚洲欧美在线观看| 亚洲黄页一区| 国产精品中文在线| 欧美a级片一区| 亚洲综合电影| 在线日韩日本国产亚洲| 欧美色另类天堂2015| 久久免费国产精品| 99国产精品久久久久久久| 国产区精品在线观看| 欧美精品大片| 久久久99免费视频| 一区二区三区免费在线观看| 国模吧视频一区| 欧美日韩综合| 老司机凹凸av亚洲导航| 亚洲自拍三区| 91久久夜色精品国产九色| 国产欧美日韩一区二区三区| 欧美国产第一页| 欧美在线综合| 一本色道久久加勒比88综合| 国产一区二区三区黄| 欧美日韩一区二区免费视频| 久久久久久一区二区| 亚洲午夜精品17c| 亚洲高清不卡| 国产亚洲欧洲一区高清在线观看 | 欧美在线观看你懂的| 亚洲美女网站| 好吊色欧美一区二区三区视频| 国产精品红桃| 欧美日韩 国产精品| 久久乐国产精品| 午夜在线视频一区二区区别| 亚洲精选中文字幕| 一区二区在线观看视频| 国产精品一区二区三区乱码| 欧美日韩1区2区| 久久综合亚州| 欧美在线资源| 亚洲欧美日韩精品综合在线观看| 亚洲精品国产无天堂网2021| 国内外成人免费激情在线视频| 国产精品久久久久久久久动漫| 欧美大片在线影院| 久久综合图片| 久久九九99视频| 亚洲一区日韩| 在线综合欧美| 亚洲理论在线| 91久久综合| 1000部精品久久久久久久久| 国内精品一区二区三区| 国产精品一二一区| 国产精品va在线播放| 欧美另类高清视频在线| 欧美成人三级在线| 久久综合给合久久狠狠狠97色69| 小处雏高清一区二区三区| 亚洲尤物在线| 亚洲手机视频| 欧美日韩国产精品一卡| 欧美大秀在线观看| 美女国内精品自产拍在线播放| 久久国产乱子精品免费女| 欧美一区二区| 久久国产天堂福利天堂| 欧美一区观看| 欧美综合二区| 欧美主播一区二区三区| 久久精品成人一区二区三区| 久久成人免费日本黄色| 久久不见久久见免费视频1|