最近剛拿到一個歷史系統(tǒng)的源代碼,簡單看了一下,頭就有點(diǎn)大,代碼內(nèi)容明顯是多年疊加的結(jié)果,如果要修改真的是個慢功夫。還好我這次的目的只是了解代碼的業(yè)務(wù)實(shí)現(xiàn),那就可以用到新工具了。同時,我發(fā)現(xiàn)交互式學(xué)習(xí)是個好東西??。
代碼中的業(yè)務(wù)
先啰嗦一句,為什么要從代碼中看業(yè)務(wù),其實(shí)很多業(yè)務(wù)已經(jīng)和業(yè)務(wù)人員溝通過,但是業(yè)務(wù)人員多表述的他們看到的內(nèi)容,系統(tǒng)如何處理的,這就不知道了。實(shí)際上隨著業(yè)務(wù)系統(tǒng)的多年建設(shè),企業(yè)的業(yè)務(wù)從系統(tǒng)建立后就已經(jīng)不再只是業(yè)務(wù)人員最初提出的業(yè)務(wù)了,系統(tǒng)代碼對業(yè)務(wù)的已經(jīng)產(chǎn)生了深遠(yuǎn)的影響,甚至說有些業(yè)務(wù)邏輯,當(dāng)前實(shí)際作業(yè)的業(yè)務(wù)人員都不知道來龍去脈,但是系統(tǒng)仍然按照之前多方約定的規(guī)則在執(zhí)行,所以說查看系統(tǒng)的實(shí)際業(yè)務(wù)運(yùn)營邏輯對了解企業(yè)實(shí)際業(yè)務(wù)是很有必要的。
提交代碼
既然要利用 GPT,那么第一步就是要把源代碼提交給 GPT,這里簡單的復(fù)制是不可能的,太長了,需要用到一個插件,它可以做到分批上傳,并且抑制 GPT 在上傳期間的反饋,但是做不到絕對抑制,這會導(dǎo)致后提提問時,GPT 會把自己的反饋也當(dāng)做源代碼的內(nèi)容進(jìn)行總結(jié),最終使回答發(fā)生偏差。我在問的時候,要求只對我提交的內(nèi)容進(jìn)行分析,這樣就好了很多。
第一個問題
上傳完畢代碼后,可以先問一下以上代碼的整體業(yè)務(wù)邏輯什么,這樣可以大概了解一下這個源文件實(shí)現(xiàn)的功能,也為以后繼續(xù)發(fā)問細(xì)節(jié)找好方向。這里需要注意的是上傳的代碼最好是一個業(yè)務(wù)的串行實(shí)現(xiàn),不要是多個業(yè)務(wù)的函數(shù)幾個,你是要問一個業(yè)務(wù)的邏輯,如果給了一堆業(yè)務(wù)不相關(guān)的函數(shù),也沒法問出來什么。
問主要實(shí)現(xiàn)業(yè)務(wù)的邏輯
拿到了主要業(yè)務(wù)邏輯之后,就可以針對其中核心業(yè)務(wù)實(shí)現(xiàn)進(jìn)行追問,像一些變量初始化之類的就可以忽略了。這里一般會問出一些核心業(yè)務(wù)對象的處理邏輯,例如合同在哪幾種情況下有處理,分別邏輯是什么。也會識別出一些關(guān)聯(lián)對象,例如合同,供應(yīng)商等,可以圍繞關(guān)聯(lián)對象的處理邏輯記性詢問,也可以直接問這個對象的狀態(tài)有哪些,例如合同的狀態(tài)包括哪些值。幸運(yùn)的話,代碼中對狀態(tài)有判斷,那么主要狀態(tài)及處理邏輯就都有了。
詢問關(guān)鍵表
在詢問業(yè)務(wù)邏輯時大概率會遇到與業(yè)務(wù)表的交互,可以讓 GPT 總結(jié)一下遇到了哪些表以及哪些字段,字段含義,與業(yè)務(wù)的交互邏輯。多角度問答案會重復(fù),也會加強(qiáng)印象。這樣比單純看表結(jié)構(gòu)要好的多。
問輸出
輸出很重要,問問輸出內(nèi)容和格式有時候會很有用。問完了輸出格式后,可以讓 GPT 根據(jù)代碼邏輯和格式要求,模擬輸出一個樣本,再對樣本做解釋,非常舒服。
問縮寫
很多變量或者函數(shù)都是中文縮寫的,這個讓我復(fù)原有點(diǎn)難度,不過讓 GPT 根據(jù)上下文推測中文縮寫的原始還是不正是它的強(qiáng)項(xiàng)嗎?哈哈哈
問業(yè)務(wù)常識
代碼邏輯懂了,但是業(yè)務(wù)含義又不懂,其實(shí)很多業(yè)務(wù)都是有業(yè)界通用說法的,只要問一下業(yè)務(wù)專家一般情況下這個業(yè)務(wù)含義是什么就行了,你說巧不巧,GPT恰巧就是業(yè)務(wù)領(lǐng)域的專家,一般業(yè)務(wù)還都看不到它。