C語言基礎
高質量的代碼
簡潔,有效代碼行數,註釋代碼比例(20%),可靠,可測試性(每一個模塊都便於測試),可維護性(代碼便於閱讀),可移植性(改變運行環境,代碼依舊可以運行)
代碼的壞味道
過長的函數(50),過多的函數參數(5),過多的局部變量(5),
重複代碼,數據泥潭(有些數據項,喜歡成羣結對),長switch語句,
代碼的重構
函數拆分(單一職責),函數提煉,
代碼註釋是程序設計人員與程序閱讀者之間的橋樑,非常有助於提高代碼的可維護性。代碼的註釋要簡潔明瞭,而且需要有意義。
過少的註釋,不利於程序的閱讀。
過多的註釋也不太好,註釋過於冗長往往都是因爲那段代碼比較糟糕,晦澀難懂。這時候就需要考略重構。
註釋可以分爲以下幾種:多行註釋,單行註釋,函數註釋,文件註釋
函數的編寫原則
命名要有意義,最好具有自解釋功能。
函數功能要單一,長度不可以過長(<50),形式參數不可以過多(<5,可以藉助結構體可以解決數據泥潭,可以藉助指針減少大數據拷貝),局部變量不可以過多(<10),嵌套深度不可以太深(<5)
功能代碼的編寫原則
條件表達式拆解,合併分支語句
高質量的代碼:
簡潔(易於理解和實現),可維護(易修改),可靠(成功運行的概率),可測試(軟件發現故障並隔離,定位的能力,便於測試設計和執行),高效(儘可能少的佔用資源,內存,時間),可移植(在原設計的特定環境之外運行)
可視化標準:
圈複雜度(每一個分之條件是一個複雜度) (1_10)進入函數是1
有效代碼行數(函數體不要太大,否則可能意味函數功能不單一)
函數參數個數(減少函數參數,引入結構體,參數過多容易受外部影響,同時增大測試難度) (0,5)
非結構化語句數量(goto)儘量不使用,影響代碼條理性(0,0)
嵌套層數(1,4)
(0,20%)(0,5)(0,5)
過度耦合(混亂的接口,不恰當的暴露)
複雜的表達式
重構手法:拆分函數,重命名函數,提煉函數(if for switch集中的地方是混亂的源泉,一組變量在一個功能內使用), 正確使用臨時變量,命名清晰,用途單一
合併重複代碼,合併重複的條件判斷(特別是嵌套)
分解條件式(提煉),合併條件式(相同處理可提煉模塊或函數)
代碼壞味道:
有效代碼註釋比例(提高可讀性)
過度的局部變量(意味着大函數)
函數變量個數(數據依賴不可以多),數據關係複雜,一般控制函數功能即可
重複代碼(修改不方便),大函數(難理解),過多函數參數,數據泥潭(參數多,代碼重複),長switch語句(邏輯混亂),
敏捷的四大宣言:
個體和互動 優於 流程和工具
工作的軟件詳盡的文檔
客戶合作 合同談判
響應變化 遵循計劃
產品負責人,scrum master,成員
用戶故事:獨立的,可以商討的,有價值的,可以估計的,合適的小,可測試的
標準格式:作爲……角色,希望系統可以……(目標),以便……(原因)
分解故事:分用戶,分場景
故事需要在一個sprint可以完成,可以加入滿意條件。
作爲網站的所有者,我希望能統計廣告的點擊次數,以便我能清除廣告收益。
Product backlog 產品需要完成的所有故事
Sprint backlog 一個迭代階段或衝刺需要完成的所有故事,相當於一個小版本
每日站會:總結問題,討論問題解決方案
story卡片 優先級
需求編號
story標題
詳細描述
如何驗收
開發責任人 估計點數
測試責任人
轉測試時間
交付時間
燃盡圖
橫座標:項目設定總時間
縱座標:故事數或故事點數或工作量
意義:到第x天燃盡多少個故事或……
兩條線:一條是理論線,一條是實際線。
Source insight3.5
註冊碼:SI3US-361500-17409
F1幫助文檔
最重要的是搜索功能:search project lookup reference browse project symbols
尋找變量定義,按下ctrl+單擊,<- 和 ->分別代表上一步和下一步
1.DOS下運行:
在DOS下輸入C:\PCLint\Lint-nt E:\main.cpp
回車,檢查結果就出來了。
檢查位於E盤根目錄下的main.cpp文件,其他文件類推,輸入“路徑+文件名”
a、打開SI,選擇Options->Custom Commands->Add...,輸入pclint。
b、在Run輸入c:\lint\lint-nt -u c:\lint\std.lnt c:\lint\env-vc8.lnt %f
c、勾上【Iconic Window】、【Capture Output】、Save Files First 【Parse Links in Output】、【File,then Line】。
d、點擊右側的【Menu】,在Menu對應的下拉框選擇【View】,選中<end of menu>,點【Insert】,OK退出。
e、可以添加運行pclint的快捷鍵:打開Options菜單中的“Custom Commands”命令項,點擊該對話框中的”keys”,
在彈出的對話框中選中pclint命令,點擊”Assign New Key…”菜單,會提示你在鍵盤上按快捷鍵,此時在鍵盤
上同時按下“ctrl、shift和p”鍵,點”OK”,就可以用ctrl+shift+p運行pclint了。
這時就可以使用source insight編譯VS2005相應的工程。
當然,如果想使用pclint集成到si後可以支持其它編譯器,可以重新設置PC-LINT,並生成一份新的std_XXX.lnt
文件,在配置中使用相應的std_XXX.lnt。
如果大家想要在vs2005中配置PC-lint9.0版,請參考http://blog.csdn.net/wzx19840423/article/details/6215925cn。
接下來給大家詳細講解在vs2010或者vs2008中配置PC-lint9.0版的步驟。
可以到http://download.csdn.net/detail/zhenliangqiu/3250717下載Gimpel_PC_Lint_9.zip免註冊版,下載完後點擊pclint9setup.exe進行安裝,這裏以安裝到C:/lint介紹。安裝完成後勾選I want to run the configuration program now.點擊finish進入配置頁面,配置選項依次爲:
1、C:/lint(這個是pc lint的安裝目錄),Create a new STD.LNT
2、Microsoft Visual C++ 2008(co-msc90.lnt)
3、32-bit Flat Model(-ms, -si4, -sp4)
4、Active Template Library(ATL),Microsoft Foundation Class Library,Standard Template Library,Windows 32-bit
5、Scott Meyers(Effective C++ More Effective C++ and Effective C++ 3rd Edition),Dan Saks,MISRA 2004
6、Create -i options
7、這裏將vc的包含目錄加進去,我加的是以下兩個
C:\Program Files\Microsoft Visual Studio 10.0\VC\include
C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include
備註:C:\Program Files\Microsoft Visual Studio 10.0是我電腦上vs2010的安裝目錄
7.2 No 不創建新的lnt
8、No
9、(env-vc9.lnt) Microsoft's Visual C++.NET 2010
10、Prepend my PC-lint directory to my PATH(create LSET.BAT)
完成
配置好pc lint之後,下面就將它集成到vc2010中,打開vc2010--Tools--External Tools,點擊Add按鈕Title爲pc_lint(這個可以任意命名),Command爲 C:/lint/lint-nt.exe(這個爲lint-nt的絕對路徑),Arguments爲-i"c:/lint" std.lnt env-vc9.lnt "$(ItemDir)$(ItemFileName)$(ItemExt)",Initial directory爲$(ItemDir),勾選"Use Output windows",點擊OK
接下來大家就會可以利用vs2010-Tools-pc_lint來對當前工程下的文件進行分析了。
點擊Tools--pc_lint就可以對選中項目分析了。
備註:如果出現類似Error 307: Can't open indirect file 'env-vc9.lnt'的錯誤,大家也不用緊張,只需要到安裝目錄C:\lint下看看有沒有‘env-vc9.lnt'文件,如果沒有一般在C:\lint\lnt下是一定有的,大家只需要將該文件拷貝一份到C:\lint目錄下即可。
-i 命令其實是一個include,-i "c:/lint"意思是將pc lint的安裝目錄包含進來,如果你的安裝目錄不是"c:/lint"的話可能需要修改。std.lnt是配置文件,你可以在你的安裝目錄下找到,你可以用記事本把它打開看看,就能大致明白是什麼意思了。另外,env-vc9.lnt的英文解釋是environment parameters for Microsoft's Visual C++ 9.0,翻譯就是爲了在vs2008上使用pc-lint的配置文件,這個文件對於vs2010也適用。
-i 指明包含路徑
-u 指明使用哪些.lnt文件
遇到一個問題:
Error 322: Unable to open include file 'stdio.h'
遇到此問題的童鞋可以再vs命令提示工具中輸入
echo %INCLUDE%
出現類似一下參數:
C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include;7
將這些參數複製,重新運行 config程序,配置到pclint路徑中即可。
可參照文章:http://www.viva64.com/en/a/0033/
觀察檢查輸出結果,如果出現error 900: (Note -- Successful completion, *** messages produced)提示表述檢查順利完成
在c:\lint\msg.txt中有錯誤碼