1. **規範(讀教材)
讀了《構建之法》中關於**規範的章節,筆記加個人理解如下。
為什麼要規範**? 有利於**維護,有利於**評審,有利於團隊合作。
1.1 **風格規範
**風格規範——個人理解就是**的排版。
1 注釋:解釋程式做什麼。
—— 不要寫不必要的注釋。
—— 注釋與**同步。(**變動需要注意注釋是否需要修改)
—— 注釋與團隊合作。 很多人在實際的開發中往往不重視注釋,沒有好的注釋,團隊成員合作是會受到影響的。假如你發布了幾個類似功能的介面,如果你在注釋中很好的解釋了介面的功能,輸入引數限制等,其他人通過你的注釋就會明了使用你發布的哪個介面。反之,需要去研究你的**實現——若你的實現很複雜,呼叫很多其它介面,理解起來困難耗時,影響團隊合作。
2. 換行:每行只寫一條語句;每行只定義乙個變數;用空行分割小功能塊。
3. 縮排:建議使用4個空格或是把tab設定為4個空格。
分支結構,迴圈結構中使用縮排。
4. 大括號:分支結構,迴圈結構中使用大括號,即使僅包含一條語句。
5. 命名:第乙個單詞全部小寫,其他單詞首字母大寫。
函式名採用動詞,動名詞;其他採用名詞。
6. 行寬:80字元或100字元。
1.2 **設計規範
對於**風格規範,相信大家都有所了解,遵守了很容易做到。(有些開發工具可以幫助自動設定好風格規範,除了**注釋, 開發的時候可以不用過多關注。) 但對於**設計規範,很多人就不是很了解了。教材對**設計規範的一些通用原則做了很詳細的介紹,仔細的讀了兩遍,發現這方面如果要做好,需要慢慢訓練。
1. 函式功能唯一:乙個函式只做一件事,並且要做好。(函式**行數建議80行,最多200行)。
2. 函式引數校驗:debug版所有引數進行校驗;正式版本對外部傳參進行校驗。
3.乙個函式最好有單一出口,有利於邏輯控制。
4. 錯誤處理:當對某件事不確定時,需要寫**處理可能發生的與預期不符的錯誤情況。
5. 斷言的使用:當對某件事很肯定,就這一種預期結果,不允許出現其他結果,此時可使用斷言。
6. **重用性——(todo)注意利用語言、類庫、框架裡提供的方法。
7. 日誌 ——記錄關鍵重要資訊(例:購票系統中,記錄誰在什麼時間買了什麼火車票)
便於查詢bug。
(建議呼叫標準庫或者系統api)
2. 列出乙個checklist
階段檢查項
結果需求分析
檢查是否有需求遺漏
檢查是否進行了需求設計書評審
檢查是否進行了測試用例設計評審
設計檢查是否進行了demo或介面原型評審
檢查是否進行了概要設計評審
檢查是否進行了詳細設計評審
開發檢查**的功能是否實現所有需求
檢查**的效能
檢查是否進行單元測試
檢查**的可移植性
檢查是否遵從**風格規範和設計規範
檢查**是否有硬編碼
檢查是否有無用**未刪除
檢查是否有可優化**
3. 效能分析和測試
關於效能分析:看了教材中關於效能分析的介紹,正如書中所說,不要隨便猜測,要進行實際驗證,資料才更具有說服力。
尤其作為新手和這方面經驗不足的人,只有你實際驗證過了,逐漸掌握的多了,才能像別人那樣直接指出效能差的地方。
關於測試:
4. 使用者需求
5.1 功能需求
5.2 非功能需求
5. 過程控制:燃盡圖、魚刺圖、甘特圖
6.1 燃盡圖
燃盡圖:用圖形展現故事點隨時間的變化情況(對故事點理解的不好)。
試著自己畫了乙個燃盡圖(在這裡假定有5項任務:1. 編寫概要設計 2. 編寫詳細設計 3. 開發** 4. 測試 5. 發布)
其中: y軸代表任務數(燃盡圖的y軸一般描述故事點); x軸代表時間 (時間以天為單位)。
在執行整個過程開始,根據計畫,畫出了如上圖中紅色線的一條參照線。(紅色參照線是計畫的理想情況,隨著時間的推移,剩餘任務數逐漸較少)
圖中黑色線條代表了整個過程中剩餘任務數隨時間變化的實際曲線。
從整個黑線可以看出3.17,3.21日新新增了2個任務,但在3.18——3.23黑色線條一直在紅色參照線的下方,說明最初的計畫高估了完成任務所需時間。
燃盡圖——方便管理者視覺化的觀測工作隨時間的變化,根據實際燃盡曲線和參照線的差異做合理調整。
通過燃盡圖如何評價過程控制的好壞呢?若燃盡曲線在參照線上下小浮浮動,說明該過程控制計畫很合理,無需調整;若燃盡曲線在某一天後一直在參照線上方,則說明該計畫有風險,可能要延期,需要及時調整;若燃盡曲線在某一天後一直處於參照線下方,說明高估了任務完成所需時間,也需要調整。
注:燃盡圖中不展現具體任務。
6.2 甘特圖
在6.1中用燃盡圖,我們看到的是剩餘任務數隨時間的燃盡情況,無法通過該圖來觀察到具體有哪些任務,也無法觀測到還剩下哪些任務,各個任務進行到了什麼階段。
甘特圖描述了整個計畫中具體任務與時間的關係。
6.3 魚刺圖
6. 互評部落格
7. psp
jobtype
date
start
endtotal(min)
編寫隨筆大綱
隨筆2016.03.14
12:30
12:46
16**規範
讀書13:00
13:30
30更新隨筆:**風格規範讀書筆記
隨筆13:31
14:13
42更新隨筆:psp
隨筆14:13
14:26
13更新隨筆:**設計規範讀書筆記
隨筆2016.03.15
08:10
08:33
23更新隨筆:checklist
隨筆9:30
10:11
41了解燃盡圖,甘特圖,魚刺圖
讀書2016.3.16
09:35
10:21
46 更新隨筆:燃盡圖
隨筆12:00
13:20
808. 選做:從範圍的角度,對比一類軟體(3個軟體)
軟體工程第二次作業
題目鏈結位址 github鏈結位址 難度瓶頸 最終選擇 改進版本 只是生成數獨終盤,不考慮附加作業,就沒有考慮類,只是函式。array 0 0 7 basic.erase 7 basic為集合名稱 if basic.size 0 for int k 0 k row k else 版本二 void c...
軟體工程第二次作業
github 位址 我剛開始打 的時候覺得打完就好,能過樣例就ok。經歷過一段時間後會發現有可能樣例過了其他測試點全錯,所以就會開始多測試幾組資料,希望自己的 能夠盡量準確。當準確性開始有保障後,我就會去思考程式本身是不是可以進一步改進,使 執行速度變的更快。在我看來自己出資料測試就相當於書中說的單...
軟體工程第二次作業
1.簡述軟體過程 軟體生存週期 軟體過程模型 軟體生存週期模型 三者之間的概念區別。軟體過程 軟體生存週期中的一系列相關過程所涉及的活動 軟體生存週期 軟體生命週期 同任何事物類似,軟體也有乙個從生到死的過程,這個過程一般稱為軟體生存週期或生命週期 軟體過程模型 軟體生存週期模型 為了能高效地開發乙...