1. 程式人生 > >alpha階段個人總結(201521123031林庭亦)

alpha階段個人總結(201521123031林庭亦)

異常 會有 比較 第一部分 命令 有時 exce debug 運動員

一、個人總結

第一部分:硬的問題

技術分享圖片
技術分享圖片

第二部分:軟的問題,在成長路上學到了什麽?

1 當你看到不靠譜的設計、糟糕的代碼、過時的文檔和測試用例的時候,不要想 “既然別人的代碼已經這樣了,我的代碼也可以隨便一點啦。”
如果有明確要求,我可以做好

2 主動解決問題。當看到不靠譜的設計,糟糕的代碼的時候,不要想“可能別人會來管這個事情” ,或者“我下個月發一個郵件讓大家討論一下”。要主動地把問題給解決了
如果有明確要求,我可以做好

3 經常給自己充電,身體訓練是運動員生活的一部分,學習是軟件工程師職業的伴侶。每半年就要了解和學習一些新的相關技術。通過定期分享(面對面的分享,寫技術博客等)來確保自己真正掌握了新技術。
有時分享

4 DRY (Don‘t Repeat Yourself)——別重復。在一個系統中,每一個知識點都應該有一個無異議的、正規的表現形式
直主動這樣做

5 消除不相關模塊之間的影響,在設計模塊的時候,要讓它們目標明確並單一,能獨立存在,沒有不明確的外部依賴。
想做,但是不知道怎麽衡量效果

6 通過快速原型來學習,快速原型的目的是學習,它的價值不在於代碼,而在於你通過快速原型學到了什麽。
一直主動這樣做

7 設計要接近問題領域,在設計的時候,要接近你目標用戶的語言和環境。
一直主動這樣做

8 估計任務所花費的時間,避免意外。在開始工作的時候,要做出時間和潛在影響的估計,並通告相關人士,避免最後關頭意外發生。工作中要告知可能的時間變化,事後要總結。
一直主動這樣做

9 圖形界面的工具有它的長處,但是不要忘了命令行工具也可以發揮很高的效率,特別是可以用腳本構建各種組合命令的時候。
正在學習命令行工具

10 有很多代碼編輯器,請把其中一個用得非常熟練。讓編輯器可以實現自己的定制,可以用腳本驅動,用起來得心應手。
沒有任何定制

11 理解常用的設計模式,並知道擇機而用。設計模式不錯,更重要的是知道它的目的是什麽,什麽時候用,什麽時候不用。
從來沒聽說過

12 代碼版本管理工具是你代碼的保障,重要的代碼一定要有代碼版本管理。
用QQ,u盤即可

13 在debug的時候,不要驚慌,想想導致問題的原因可能在哪裏。一步一步地找到原因。要在實踐中運用工具,善於分析日誌(log),從中找到bug。同時,在自己的代碼裏面加 log.
只會printf

14 重要的接口要用形式化的“合同”來規定。用文檔和斷言、自動化測試等工具來保證代碼的確按照合同來做事,不多也不少。使用斷言 (assertion) 或者其他技術來驗證代碼中的假設,你認為不可能發生的事情在現實世界中往往會發生。
從來沒聽說過

15 只在異常的情況下才使用異常 (Exception), 不加判斷地過多使用異常,會降低代碼的效率和可維護性。記住不要用異常來傳遞正常的信息。
如果有明確要求,我可以做好

16 善始善終。如果某個函數申請了空間或其他資源,這個函數負責釋放這些資源
有時這樣做

17 當你的軟件有多種技術結合在一起的時候,要采用松耦合的配置模式,而不是要把所有代碼都混到一起。
沒有實踐的機會

18 把常用模塊的功能打造成獨立的服務,通過良好的界面 (API) 來調用不同的服務。
一直主動這樣做

19 在設計中考慮對並行的支持,這樣你的API 設計會比較容易擴展。
考慮在適當的層次支持並行

20 在設計中把展現模塊 (View) 和實體模塊 (Model) 分開,這樣你的設計會更有靈活性。
沒搞清楚啥是V,啥是M

21 重視算法的效率,在開始寫之前就要估計好算法的效率是哪一個數量級上的(big-O)。
主動測試程序效率,以驗證估算

22 在實際的運行場景中測試你的算法,不要停留在數學分析層面。有時候一個小小的實際因素 (是否支持大小寫敏感的排序,數據是否支持多語言)會導致算法效率的巨大變化。
想用,但不知道工具

23 經常重構代碼,同時註意要解決問題的根源。
一直主動這樣做

24 在開始設計的時候就要考慮如何測試 ,如果代碼出了問題,有log 來輔助debug 麽? 盡早測試,經常測試,爭取實現自動化測試,爭取每一個構建的版本都能有某些自動測試。
項目沒有安排時間,我也沒有提這事

25 代碼生成工具可以生成一堆一堆的代碼,在正式使用它們之前,要確保你能理解它們,並且必要的時候能debug 這些代碼。
一直主動這樣做

26 和一個實際的用戶一起使用軟件,獲得第一手反饋。
想做但是沒有機會

27 在自動測試的時候,要有意引地入bug,來保證自動測試的確能捕獲這些錯誤
一直主動這樣做

28 如果測試沒有做完,那麽開發也沒有做完。
一直主動這樣做

29 適當地追求代碼覆蓋率:每一行的代碼都覆蓋了,但是程序未必正確。要確保程序覆蓋了不同的程序狀態和各種組合條件
一直主動這樣做

30 如果團隊成員碰到了一個有普遍意義的bug, 應該建立一個測試用例抓住以後將會出現的類似的bug。
一直主動這樣做

31 測試:多走一步,多考慮一層。如果程序運行了一星期不退出,如果用戶的屏幕分辨率再提高一個檔次,這個程序會出什麽可能的錯誤?
一直主動這樣做

32 (帶領團隊)了解用戶的期望值,稍稍超出用戶的期望值,
如果有明確要求,我可以做好

33 (帶領團隊) 不要停留在被動地收集需求,要挖掘需求。真正的需求可能被過時的假設、對用戶的誤解或其他因素所遮擋。
一直主動這樣做

34 (帶領團隊)把所有的術語和項目相關的名詞、縮寫等都放在一個地方。
一直主動這樣做

35 (帶領團隊)不要依賴於某個人的手動操作,而是要把這些操作都做成有相關權限的人士都能運行的腳本。這樣就不會出現因為某人休假而項目被卡住的情況。
一直主動這樣做

36 (帶領團隊)要讓重用變得更容易。一個軟件團隊要創造一種環境,讓大家有輕松的心態來嘗試各種想法 (例如,模塊的重用,效能的提升,等)。
一直主動這樣做

37 (帶領團隊)在每一次叠代之後,都要總結經驗,讓下一次叠代的進度安排更可靠,質量更高。
一直主動這樣做

38 (帶領團隊)團隊中往往會有矛盾產生,作為領頭人,怎麽辦?
有明確和一致的處理矛盾的原則

二、回答問題

1、每個人的編程習慣不一樣,規範也不一樣,在團隊工作中對成為一個很大的阻礙,那應該如何處理這個問題?

答:經過了結對編程和團隊編程後,很顯然團隊中有一個統一的編碼規範是很重要的,可以免去很多不必要的麻煩,所以在項目開始前就應該商議好具體的編碼規範,或是看看一些前輩的經驗教訓,總結一個好的編碼規範。

2、要求團隊成員之間事無巨細的信息共享,是否會產生過多的無用信息?

答:對於微小改動的記錄是有必要的,有時微小的改動就會引發一些bug,尤其是需要讓團隊成員知曉,才能夠制止更大的問題出現。

三、再提問題

**問題一

用戶的需求千奇百怪,選擇起來也就十分費勁,如何才可以精準的定義用戶的需求呢?
問題二
在第十章中,作者說很多同學一旦搞到某文檔的模板、某課程的PPT,就覺得事情就成功了一大半,然後盲目地的套用最全面的模板,對項目有極大的副作用,那麽具體的副作用在哪呢?
問題三
第六章中說很多程序員寫完功能的時候,感覺好像項目完成了80%,殊不知後面的20%往往要花費80%的時間,那麽有沒有好的方法減少測試的時間呢,讓程序能夠一次性較好的成型。
問題四
bug修復是一個讓人頭疼並且費時的事,如何可以更快的找到問題的根源以及提高解決bug的效率?
問題五
應該如何采用一個合適的團隊模式,書上介紹了很多團隊模式,但還沒有一個好的建議或者說一個好的標準衡量。

alpha階段個人總結(201521123031林庭亦)