偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

避坑指南:程序猿如何避免線上Bug

新聞 前端
hello world是人類已知的最早的絕無(wú)bug的程序,但我們?cè)谌粘i_(kāi)發(fā)中,需求不可能簡(jiǎn)單到像hello world一樣,經(jīng)常是coding五分鐘,debug2小時(shí)。

 沒(méi)有錯(cuò)誤的程序是一則謬論,世間難尋。假設(shè)存在著一個(gè)沒(méi)有任何錯(cuò)誤的程序,那么這個(gè)世界將會(huì)不復(fù)存在。

----《編程之禪》第四篇(金)第二節(jié)

[[223718]]

hello world是人類已知的最早的絕無(wú)bug的程序,但我們?cè)谌粘i_(kāi)發(fā)中,需求不可能簡(jiǎn)單到像hello world一樣,經(jīng)常是coding五分鐘,debug2小時(shí)。在討論如何減少bug之前我們討論下哪些場(chǎng)景下容易產(chǎn)生bug。

[[223719]]

1、bug產(chǎn)生原因:

a、需求本來(lái)就有問(wèn)題而產(chǎn)生的代碼缺陷。這類問(wèn)題源頭是需求或產(chǎn)品這一塊沒(méi)有分析清楚,這個(gè)鍋產(chǎn)品背,但是作為開(kāi)發(fā)者有必要參與到需求分析這個(gè)環(huán)節(jié)中。

b、代碼實(shí)現(xiàn)和需求相差很大的缺陷。這類問(wèn)題也是比較常見(jiàn)的,開(kāi)發(fā)人員的思維與需求或產(chǎn)品人員的思維還是有很大差距的。

c、很復(fù)雜的需求代碼實(shí)現(xiàn)在某些邏輯上有缺陷。這類問(wèn)題有可能是開(kāi)發(fā)人員不想實(shí)現(xiàn)完全,也有可能需求過(guò)于復(fù)雜,在系統(tǒng)設(shè)計(jì)階段就沒(méi)有分析出所有情況。

d、需求變動(dòng)后對(duì)原有業(yè)務(wù)代碼進(jìn)行重構(gòu),對(duì)原有業(yè)務(wù)不熟悉不了解

e、粗心導(dǎo)致的缺陷,比如條件判斷寫反,人孰能無(wú)過(guò)。

f、系統(tǒng)架構(gòu)上的缺陷。這類問(wèn)題一般很少,出現(xiàn)的話是大面積的。

g、對(duì)框架特性、數(shù)據(jù)結(jié)構(gòu)、語(yǔ)言不熟悉,導(dǎo)致出現(xiàn)缺陷。

h、外部原因,操作系統(tǒng)或數(shù)據(jù)源。

那么如何避免產(chǎn)生bug呢,尤其是iOS,提交AppStore審核周期并不短,是否還記得那些慘痛的線上bug經(jīng)歷,半夜起來(lái)改bug,提交后審核好幾天,所以有必要總結(jié)下如何避免bug,下面是我總結(jié)的幾點(diǎn)心得,歡迎補(bǔ)充

•詳細(xì)和無(wú)歧義的需求規(guī)格和業(yè)務(wù)邏輯

•合理的架構(gòu)和模塊

•清晰明確的模塊間接口

•不要復(fù)制代碼,盡可能抽取共用的部分,重復(fù)的代碼在修改時(shí)容易造成不一致

•不要輕易重構(gòu)代碼,每次重構(gòu),盡量做到所重構(gòu)的業(yè)務(wù)都在本次QA測(cè)試用例的覆蓋范圍內(nèi)

•盡量在理解同事業(yè)務(wù)代碼的情況下,更改組內(nèi)成員的業(yè)務(wù)代碼

•處理邊界條件,處理非法的參數(shù),永遠(yuǎn)不要相信數(shù)據(jù)的可靠性,考慮到各種邏輯分支

• 限制函數(shù)的長(zhǎng)度, 編寫易讀易維護(hù)的代碼,不過(guò)度使用技巧,難以理解的代碼很可能在修改中出錯(cuò)

• 使用assert ,正確使用異常處理,捕捉能夠處理的異常

萬(wàn)一真的出現(xiàn)了bug也別慌,善用《甩鍋大法》, 代碼沒(méi)錯(cuò)接口的錯(cuò),接口沒(méi)錯(cuò)SDK的錯(cuò),SDK沒(méi)錯(cuò)編譯器的錯(cuò), 編譯器沒(méi)錯(cuò)虛擬機(jī)錯(cuò), 虛擬機(jī)沒(méi)錯(cuò)操作系統(tǒng)錯(cuò), 操作系統(tǒng)沒(méi)錯(cuò),硬件錯(cuò)了,硬件沒(méi)錯(cuò)還有電磁干擾,總之不要自己背鍋哈哈哈,兄得接住這口鍋?。?/p>

[[223720]]

***我個(gè)人認(rèn)為寫出沒(méi)有bug的程序要在需求不不變的情況下。之所以產(chǎn)品不斷的維護(hù)有bug是因?yàn)楹罄m(xù)的需求變更在前期的軟件設(shè)計(jì)中是無(wú)法考慮的。由于需求變化,但是又不可能每次變更需求都要重新設(shè)計(jì)架構(gòu)和軟件,導(dǎo)致軟件也在bug發(fā)現(xiàn)和消除中循環(huán)著來(lái)度過(guò)軟件的生命周期,直到軟件下線,所以我們只能不斷積累開(kāi)發(fā)經(jīng)驗(yàn),培養(yǎng)思維的嚴(yán)密性,養(yǎng)成良好的開(kāi)發(fā)習(xí)慣,來(lái)減少bug。

責(zé)任編輯:張燕妮 來(lái)源: iOSTips
相關(guān)推薦

2021-05-07 21:53:44

Python 程序pyinstaller

2021-05-08 12:30:03

Pythonexe代碼

2024-04-03 12:30:00

C++開(kāi)發(fā)

2024-04-24 13:45:00

2021-02-26 00:46:11

CIO數(shù)據(jù)決策數(shù)字化轉(zhuǎn)型

2020-06-19 11:20:17

開(kāi)發(fā)避坑支付寶

2023-05-24 10:06:42

多云實(shí)踐避坑

2022-03-04 18:11:16

信服云

2021-02-22 17:00:31

Service Mes微服務(wù)開(kāi)發(fā)

2021-09-07 15:41:35

Bug誘因代碼

2021-04-28 09:26:25

公有云DTS工具

2020-12-16 10:00:59

Serverless數(shù)字化云原生

2018-10-26 09:22:57

微服務(wù)架構(gòu)應(yīng)用開(kāi)發(fā)

2020-07-07 09:00:00

SIEM安全信息和事件管理網(wǎng)絡(luò)安全

2020-05-21 11:38:10

監(jiān)控系統(tǒng)架構(gòu)技術(shù)

2018-01-20 20:46:33

2020-06-12 11:03:22

Python開(kāi)發(fā)工具

2019-02-12 15:07:42

屏幕參數(shù)PC

2019-04-24 17:45:24

微服務(wù)容器青云

2020-08-26 07:37:25

Nacos微服務(wù)SpringBoot
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)