這只是一篇開發小結,不要開罵了好麼,早就變成溫柔的推廣了,比以前好太多,哥只是一個小小的程序員,作為程序員,請好好站在程序員的角度考慮一下問題,滾這麼多犢子干嘛
每次開發完一個功能後,總發現有很多可以改進的地方,但下次開發還是會犯同樣的錯誤,這次決定記錄一下可以改進的地方,以便下次不要在犯同樣的錯誤。
1:排期估算錯誤,評估開發時間過於樂觀。以為只是改改UI,加十幾個動畫,結果整個UI都被重寫了,重寫意味著要熟悉原來的需求,要讀通原有代碼的邏輯,雖然我對整體需求比較了解,但UI那塊的代碼之前嘗試去讀過,就是覺得暈(動畫都是直接上原裝定時器,沒有任何包裝,而且到處都是)。重寫完後,除了保留了原有的框架外,其他的代碼都被刪除重寫了。雖然按時完成了開發任務,但測試階段BUG是一堆一堆的,當同事問我BUG為什麼這麼多的時候,我竟無言以對。現在看來重寫的決定是對的,不然一堆不知道啥原因的BUG會讓我瘋掉。重寫後,我知道了所有的需求及實現細節,代碼也是我自己的了,出了問題,也好排查解決。
2理清思路才能解決問題。有兩個偶現的BUG,就是怎麼都解決不了,各種修改都不行,這個功能以前就是我自己實現的,現在只是改UI,加動畫,最後實在沒辦法,只好重新理了一下思路,發現mouse_hover、mouse_leave、delete、add和動畫攪在一起,代碼也很混亂,在改下去,問題不一定能解決,而且感覺要失控的樣子,在理清思路後,把這個功能又給重寫了,結果兩個BUG順利的解決了。
3沒想清楚的地方都變成了BUG。沒錯,哥的BUG就是多(請容許我先去哭一個小時)。在開發的時候,經常是想了一個大概,感覺可行,就開始寫代碼,寫完後,編譯運行,得到了想要的結果,感覺沒什麼問題,就開始開發下一個功能(開發任務重啊,必須得速度),然後這個功能就這樣提測了,然後測試就給你提了幾個BUG,然後你的BUG數量很提神。雖然我們很難把任何事情都考慮得很清楚,但是你明知道可能有疑問的地方就一定要想清楚,不要存僥幸心理,因為不翔的預感告訴我們,雖然這一會兒拉不出翔,但一定是會拉出來滴,到時候你就等著吃吧。
4四面楚歌的時候,誰離我最近我就干掉誰,誰最容易干掉就最先干掉誰。BUG還有20多個,我正焦頭爛額的改BUG,測試發來消息說這個是不是BUG,要我解釋一下;我正跟測試解釋的時候,產品經理經理過來說要改一個“小需求”;設計過來說要改UI細節;客服發來消息,這個遺留BUG什麼時候解,已經有很多用戶反饋了這個問題。我的血壓感覺一下子就上去了,你們別攔著我,我要去吃藥,醫生說:藥、不、能、停。雖然有點誇張,但有時候真的是被搞得焦頭爛額。兵來將擋水來土掩,問題還是得解決,誰叫咋是程序員呢。只好給這些任務分一個優先級,容易解決的就馬上解決了,緊急的問題先解決,留著只會讓問題看起來越來越多,加大自己的壓力,問題多也容易遺漏,不能馬上解決的,一定要做好記錄,因為這些翔都是屬於你的,你要把他吃干淨。
5求助是解決問題最快的方法。求助總讓人覺得有點那啥,一般都是不到萬不得已,不會向別人求助的,但有時自己鑽進牛角尖,在向別人求助時,描述問題的時候,其實也是一個理清思路的過程,說不定說著說著,就靈光乍現,找到問題的解決方案了。還有就是有些方面的確是別人更熟悉一些,需要掌握一些知識點,你不知道就解決不了,知道就分分鐘解決問題,這個時候就應該虛心向別人請教,不要不好意思向別人求助,但不要養成習慣。
6儲備好知識在出發。百度衛士5.0這個版本界面很炫,加了很多動畫,我自己就要實現十幾個動畫,問題是我之前沒有玩過動畫啊,我根本就不知道實現一個動畫要多長時間,對自己能不能實現也沒底,排期都是有經驗的同事給我排的。在開發之前,我先看了一個類似動畫的例子,感覺還行,但是我這十幾個動畫,各式各樣,很多都沒例子可抄。於是花了大約1天的時間,來看皮膚引擎動畫相關的源碼,源碼之內了無秘密,看了源碼之後,發現寫動畫還是很簡單的,其實就是通過定時器隔一段時間設置一下控件的屬性。1秒鐘24幀人眼看到的就是動畫的效果了。當我明白動畫的實現原理後,在寫起動畫來就得心應手了。
7給你的代碼加上日志。有時候忘了給代碼加日志,出了問題不知道怎麼排查,就很後悔自己當時沒有加日志,有些問題看日志就很好解決,沒日志就沒有頭緒,感覺沒有問題啊,但問題就是活生生的擺在你眼前,讓你因為沒有加日志而後悔莫及。
8不要總是去猜,要去論證。這條主要是針對我自己,因為我已經猜出了習慣,猜出了風格。總是靠猜去解決問題也不是辦法。雖然很多時候都被我猜對了,但猜錯了的問題怎麼解?有些偶現的BUG,你以為是XX原因,然後做了修改,以為解決,其實並沒有解決。遇到問題還是得去定位去分析解決。
9寫結構清晰易懂的代碼。這點雖然難做到,但必須追求。你是否曾經有這樣的感受:昨天寫的代碼,今天來看就完全不認識了,還以為不是自己寫的代碼,不然自己寫的東西自己怎麼會看不懂?這種現象可能是寫的時候靈光乍現,寫出了神級代碼,一般人看不懂,今天作為一般人還真就看不懂了,所以在寫出神級代碼的時候,一定要加注釋說明神級代碼是怎麼來的。還有一種情況就是代碼被寫成狗屎了,真是看不懂,大多數情況可能就是這樣,自己的翔從來都是自己吃的,為了讓自己少吃點翔,將代碼寫好一點。清晰的思路和結構清晰的代碼都讓人舒服,會有被電到的感覺,混亂的思路和結構混亂的代碼總讓人覺得不適,有種惡心的感覺。
10速度還是效率。《唐伯虎點秋香》裡有一段對白,大概是這樣:給我追華府的官船|公子,你真有眼光,我可是出了名的快|大哥你的船在下沉啊|沉也沉得快嗎。開發排期總是很緊,於是我們的開發速度都很快,然後就產生了很多BUG,然後又花和開發差不多一樣的時間來修BUG,如果我們在開發的時候能夠把代碼寫好點,多用點時間一次就把事情做好,效果會不會好一點。我不知道,但是對自己能力的提高肯定大於前者,一次將事情做好,本就是一種很強的能力,而且我覺得這種能力是可以訓練的,當你以這種方式去開發的時候,就是一直在訓練這種能力。在高考的時候,我旁邊就坐著全年級第一的家伙,在考數學的時候,從第一題做到最後一題,都沒有將試卷翻過來,除了最後一題沒做完,其他的都全對。在要交卷的時候,終於將試卷翻過來了,哥一眼看到最後兩個選擇題的答案和哥的不一樣,哥硬是沒有改自己的答案,最後活生生的將自己考成了一個專科生,至今還為自己當時的決定感動不已。
最後送上百度衛士新版本的兩張諜照。