❶ 作為一個程序員,我發現同事寫的代碼有Bug,怎麼辦
作為一個程序員,你發現同事寫的代碼有Bug,你會告訴他嗎?講真的,這個事情對我來講,很難,因為我在這個事情上吃過苦頭!
看待這個問題首先得看對方脾氣咋樣,如果對方脾氣不好,或者很難搞,還是想想其他辦法。直接跟他講可能會遭到對方的白眼!
別看我們程序員一個個傻傻獃獃的,其實自尊心特別強!除非你是他的領導,否則即使你發現了他代碼里的Bug,他也不會服你!雖然還是會改,但內心一定在想:「就你能?自己管好你自己就成,看我代碼幹啥?」
其實我也是這樣的心理,好像程序員除非自己願意,否則都不怎麼喜歡別人去研究自己的代碼,好像對方故意找自己茬的意思。
但是不管咋樣,不管是有意無意,我們既然發現了同事寫的代碼有問題,就不能坐視不管!
我最近在調一個小夥伴的介面時,因為涉及到數據回滾,所以就想知道他的代碼有沒有做回滾操作。如果沒有,可能我這邊數據已經回滾了,他那邊沒回滾就會導致數據前後不一致。所以我也不是有意要審查他的代碼。
然後我就發現他不光沒有做回滾操作,也沒有做批處理。幾個涉及到修改數據的代碼就這樣一行一行走下來,看著直讓人撓後腦勺。
於是我就把這個事情告訴了他,讓他要麼做事物(如果操作有問題,可以自動回滾),要麼做主動回滾。否則我在調他介面時,如果我這邊撤銷了數據修改,他那邊卻提交了修改,就會導致數據丟失或前後不一致。
當我告訴他這個情況和解決方案以後,我能很明顯地感受到他有點不愉快。但事實擺在眼前,也只能修改。可修改歸修改,他還是有點脾氣的。於是他寫了一個事物,將大部分涉及到增刪改的語句全部包在了裡面,唯一把一個刪日誌的語句留在了外面。
我看到這個情況,就委婉地跟他說:「」好像這個刪日誌的語句也要包在事物裡面哦!」
但是他卻說,這個無關緊要,他特意放在外面的。
我跟他說,既然這里有數據存在,就不是無關緊要的。不管咋樣,也不能無緣無故就把數據給刪了。但是他很倔強,執意不改,還說如果我覺得這個數據有用,那就讓我自己「順手」把這里的代碼改一下。
此時我能明顯地感受到他已經有點煩我了!無奈之下,我把這段代碼給移動到了事物裡面。
而我為什麼說我因為發現同事代碼有Bug告訴同事而吃過虧呢?
原因在於我之前待過的一家公司,有一個工作了幾年的程序員同事,而我當時是個萌新。因為我專門培訓過,所以代碼能力還行。可這個同事雖然工作了幾年,但寫出來的程序代碼卻Bug一堆,常規測試手段還測不出來。
我是在偶然之間發現他寫的一個程序是有Bug,但是又不確定,所以就想看看他代碼是咋寫的。不看不知道,一看嚇一跳,他寫的好大一部分代碼都有問題!
我當時初生牛犢不怕虎,發現一個跟他說一個,結果最後把他給惹毛了,當場就要跟我動手,說我專門針對他。我哪有針對他的心呀!我當時想的是把這些Bug找出來,讓他改掉,否則對公司也不好。
但是他想的估計是被我這個萌新發現了一堆Bug很丟人。我總是針對他的代碼找Bug,他就是脾氣再好也綳不住啊!
後來我們的部門經理為了不讓他難堪,也為了給他個台階下,找了我寫的程序里的一個缺點,猛批了下,然後跟大家說:「我剛才看了看,大家寫的代碼有好多問題。這樣,大家都各自檢查一下自己的代碼,看看有沒有問題,有問題盡快改過來,然後我們統一測試!」
直到現在,我也沒學會當發現同事代碼有Bug以後,在不讓同事產生不愉快的心理的情況下,委婉地告訴同事他代碼寫的有問題的方法。
❷ 程序員為什麼要一直改bug,不能一次性寫好嗎
軟體可能在使用過程中沒有任何問題,但不符合產品的預期下圖源自「How projects really work?」,很形象的突出了客戶需要的產品和最終得到的產品不一致。
所以軟體想要變得成熟,Bug收集和處理機制是非常有必要的,比如:會影響客戶使用的優先順序高的Bug要優先修復。Bug是軟體的影子,也是程序員的噩夢實際上不能存在沒有bug的軟體,Bug和軟體如影隨形。就像我們使用的Windows,窮盡無數優秀的軟體工程師來設計給用戶優秀的桌面體驗,但也有各種層出不窮的bug。
程序員對Bug有多愛就有多恨,Bug無處不在,即使再牛逼的程序員也逃脫不了Bug的魔掌。想要完全避免Bug幾乎是不可能的,所以也不在一次性就寫好的程序。以上個人淺見,歡迎批評指正。認同我的看法,請點個贊再走,感謝!喜歡我的,請關注我,再次感謝!
❸ 程序員不喜歡什麼,在廣州藍景做開發的朋友說,他不喜歡加班改別人的bug,你們呢
程序員最討厭不確定性。
Debug的時候,在怪異再棘手的問題,只要可以穩定重現,都遲早可以解決。「穩定重現」的意思是只要按一定的步驟做下來,問題就可以重演。
最討厭的就是那種時有時沒有,不知道什麼時候出現的bug。改了代碼不知道有沒有效,也不知道是否引入了新問題。可以把碼農逼瘋。
引入到生活中對人對物的態度也是一個道理。無緣無故發脾氣又不說為什麼的女朋友,言而無信說到做不到的人,約好的事情被放鴿子... 這些都是不確定性。
程序員對不可控的不確定性因素也是有解決方案的。在代碼里頭把異常try-catch-finally一下,做好補救收尾,在加上幾行注釋警醒後來人這里別亂動。對隨機發生的問題,對應方案就是假設這里永遠都會有問題,把隨機的行為轉化為降格的確定行為。就比如隨機發脾氣的女朋友吧,就會放棄研究發脾氣的原因,不求治本,而是假設她永遠會發脾氣,專注「哄」的工作也就是catch裡面的內容。
❹ 程序員故意留bug違法嗎
程序員故意留bug違法嗎?正常是不違法的,但是如果這個bug導致了嚴重的後果,是要承擔法律責任的
❺ 程序員遇到解決不了的bug怎麼辦
大部分程序員都有一個問題就是不太願意測試自己的代碼。他們草草的調式完成以後就認為工作結束,測試那是測試人員的工作。
1. 影響了程序員自己的聲譽
2. 影響了產品的質量
3. 影響了客戶的信任度
4. 這個時候再 DEBUG 難度增大了許多。
大的不說,就說多自己聲譽的影響吧。如果你的程序總會有這樣那樣的 BUG ,你得到收益會減少,即使你寫了很多代碼。
程序員必須克服一些自身的致命缺點才能夠從根本上解決這個問題。那麼這個問題是什麼?前面我們已經提到,程序員對自己的代碼都非常寬容,認為那是正確的沒有問題。實際上這種想法比較正常,程序是通過程序員思考和設計之後才寫出來,程序員不會將自己認為不正確的東西寫到代碼里,而到這個時候都一直假設程序是正確的;但人非聖賢,怎麼可能不犯錯誤來。實際上程序員在對待其他程序員時候的態度就很好,帶著一種挑剔和學習的態度;但一旦對待自己的代碼就很難這么做;這就是最致命的。程序員也必須對自己的代碼帶著挑剔和學習的態度;這個基礎是假設自己的代碼是錯誤的,然後需要做的是怎麼樣證明自己的代碼是正確的。程序員自身可以在程序生成的每個階段做這些工作:仔細的設計(這個時候畫點時間是值得的,必須保證我們對自己的程序有清晰的輪廓後才能開始動手寫)、編寫代碼時、單元測試(單元測試的重要性就不在贅婿了)、功能測試。