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中有错误码