今天不想聊別的锹引,就想聊點(diǎn) Bug矗钟,是不是感覺(jué)我有點(diǎn)傲嬌呢?昨天大家的留言我都一一仔細(xì)看完了嫌变,看完之后吨艇,就想到了一句話:生命不息,坎坷不止腾啥。2016年大家真的是被互聯(lián)網(wǎng)的資本寒冬折騰壞了东涡,這真的跟我們編程一樣:編程不息,Bug 不止倘待。
我想大家看完文章的開(kāi)頭疮跑,肯定會(huì)以為,我用人生比喻編程凸舵,坎坷比喻 Bug 祖娘,來(lái)篇雞湯解除大家人生和工作上遇到的饑餓和苦難,那你們就錯(cuò)了啊奄,我這個(gè)人就是不按常理出牌渐苏,咱們聊得就是編程中的 Bug 掀潮。因?yàn)槲易罱墓ぷ骼鲜歉?Bug 較勁,讓我有點(diǎn)想吐槽了整以,僅此而已胧辽。
其實(shí)作為一個(gè)程序員最大的快樂(lè)我認(rèn)為有兩件事:一個(gè)是自己的軟件或者產(chǎn)品,按照自己的心意做出來(lái)公黑,并如期上線成功了邑商;還有一個(gè)就是困擾自己很久的一個(gè)大 Bug ,突然被解決了凡蚜。Bug 被解決的那種快感人断,那種感覺(jué)就像是被你追求很久的一個(gè)女神突然答應(yīng)做你女朋友一樣,讓你心花怒放朝蜘,春心蕩漾恶迈,前幾天是因?yàn)楸?Bug 困擾的輾轉(zhuǎn)反側(cè),夜不能寐谱醇,現(xiàn)在是興奮的難以入眠暇仲。
作為程序員,自編程伊始副渴,Bug 就會(huì)如影隨形奈附,因?yàn)樗褪悄愕挠白印ug 就是軟件的影子煮剧,和軟件就是與生俱來(lái)的斥滤,是不可逃脫的好 CP,有著難舍難分的好感情勉盅。Bug 無(wú)處不在佑颇,對(duì)于程序員的酷愛(ài),超越程序猿的老婆草娜,它對(duì)于軟件的癡迷挑胸,比程序猿還要厲害,即使再牛逼的程序猿也逃脫不了 Bug 的魔掌宰闰。
你有代碼潔癖嗎嗜暴?
我相信大部分人都有代碼潔癖,尤其是重癥強(qiáng)迫癥患者议蟆,最常見(jiàn)的一個(gè)現(xiàn)象就是有很多程序員不允許代碼中有警告的存在闷沥,一定要消除掉才行,還有的是打括號(hào)的是時(shí)候特別喜歡成對(duì)的打咐容,有的程序員就是看不慣大括號(hào)在左邊和代碼同行顯示舆逃,有的就是不習(xí)慣大括號(hào)換行等等。你存在這種情況嗎?自己有代碼潔癖挺好的路狮,有時(shí)候能讓自己養(yǎng)成良好的代碼規(guī)范虫啥,最起碼寫(xiě)的代碼整潔。當(dāng)然現(xiàn)在的 IDE 可以幫你一鍵格式化奄妨。
其實(shí)如果每個(gè)人的代碼格式潔癖不同涂籽,那除了自己之外的別人看起來(lái)就會(huì)很別扭。所以砸抛,我們程序員作為一個(gè)高頻的跳槽職業(yè)评雌,肯定會(huì)經(jīng)常遇到去新公司接手之前離職前同事的代碼的情況,那個(gè)痛苦不言而喻直焙。交接查看代碼的時(shí)間成本對(duì)于一個(gè)公司來(lái)說(shuō)景东,還是非常大的。這時(shí)奔誓,我們就需要一個(gè)公司或者團(tuán)隊(duì)斤吐,有自己的編碼規(guī)范文檔,對(duì)于一些常量的定義厨喂,變量的定義和措,方法的命名都有自己的一個(gè)規(guī)范,這樣新同事入職蜕煌,看完規(guī)范再看代碼其實(shí)能夠節(jié)約不少時(shí)間派阱。
遇到 Bug 時(shí),你的反應(yīng)是什么幌绍?
遇到 Bug 時(shí),每個(gè)程序員由于性格不同故响,反應(yīng)也不一樣傀广,看看你屬于哪種?
理性的程序員會(huì)說(shuō):這個(gè) Bug 能復(fù)現(xiàn)嗎彩届?
自負(fù)型:這不可能伪冰,在我這是好好的。
經(jīng)驗(yàn)型:不應(yīng)該樟蠕,以前沒(méi)這個(gè)問(wèn)題爸簟?
幻想型:可能是數(shù)據(jù)有問(wèn)題寨辩。
無(wú)辜型:我好都好長(zhǎng)時(shí)間沒(méi)碰這塊代碼了吓懈,怎么可能!
樂(lè)觀型:只需要改一行代碼靡狞,不會(huì)影響其它程序的耻警。
實(shí)踐型:你重啟一下服務(wù)試試。
那如何減少代碼中的 Bug 呢?
說(shuō)了這么多廢話甘穿,主題不就是想說(shuō)腮恩,如何減少代碼中的 Bug 嗎?其實(shí)我這個(gè)人比較矯情温兼,比起如何減少代碼中的 Bug秸滴?我更喜歡吐槽。
每個(gè)團(tuán)隊(duì)制定一個(gè)代碼規(guī)范募判,同一個(gè)項(xiàng)目荡含,同一個(gè)規(guī)范。
熟悉功能需求兰伤,找到合適的功能框架内颗。
編碼之前,一定要先理清需求敦腔,將業(yè)務(wù)轉(zhuǎn)化成功能點(diǎn)均澳。根據(jù)功能點(diǎn)分模塊,寫(xiě)方法符衔。
編碼過(guò)程中找前,一定要嚴(yán)謹(jǐn)?shù)倪M(jìn)行業(yè)務(wù)邏輯處理,比如:拋出的異常要處理判族,在 for 循環(huán)中躺盛,盡量不要頻繁 new 對(duì)象等。 代碼邏輯要清晰形帮。
做好代碼審查槽惫,Code Review 。不要懶于代碼審查辩撑。
其實(shí)還是那句話界斜,說(shuō)起來(lái)容易,做起來(lái)難昂霞健各薇!就跟寫(xiě)注釋一樣,寫(xiě)一句注釋能有多難君躺,大部分程序員都懶于寫(xiě)注釋?zhuān)阶詈笄团校瑫r(shí)間長(zhǎng)了,自己都看不懂自己寫(xiě)的是什么玩意了棕叫。我相信大家都知道程序員討厭的四件事林螃,那就是:寫(xiě)注釋、寫(xiě)文檔俺泣、別人不寫(xiě)注釋治宣、別人不寫(xiě)文檔急侥。
編程不息,Bug 不止侮邀,在天愿作比翼鳥(niǎo)坏怪,在地愿為連理枝。天長(zhǎng)地久有時(shí)盡绊茧,此恨綿綿無(wú)絕期铝宵。Bug 對(duì)你如此深情,如此愛(ài)你华畏,你怎么能拒絕鹏秋?這就是我們程序員編程工作中的必要需求。