1.高品质的代码
1.1.性能(Performance)
1.1.1.只执行需要的操作,而且执行迅速
(资料图片仅供参考)
1.1.2.不会使系统陷入停顿
1.2.可用性(Availability)
1.2.1.持续在所需的性能水平上保持可用
1.2.2.Topic1
1.3.安全性(Security)
1.3.1.正确验证输入
1.3.2.防止无效的数据格式或超范围的无效数据
1.3.3.防止恶意攻击代码
1.3.4.身份验证
1.3.5.鉴权操作
1.3.6.具备容错性
1.4.可伸缩性(Scalability)
- 1.4.1.安全地处理指数级增长的用户数目,而不会令系统停顿
1.5.可维护性(Maintainability)
1.5.1.修复缺陷并添加新功能的难易程度
1.5.2.低耦合高内聚
1.6.可访问性(Accessibility)
1.6.1.能力受限的成员也能够根据自己的需要轻松地修改和使用软件
1.6.2.高对比度的用户界面
1.6.3.针对阅读困难者和盲人添加的旁白
1.7.可部署性(Deployability)
1.7.1.针对软件的用户
1.7.1.1.独立用户
1.7.1.2.远程访问的用户
1.7.1.3.局域网用户
1.7.2.软件都应当易于部署而不会出现任何问题
1.8.可扩展性(Extensibility)
- 1.8.1.添加新功能以进行扩展的容易程度
1.9.简记为PASSMADE
2.代码度量
2.1.关注软件的复杂性与可维护性
2.2.维护性指标
2.2.1.应用程序生命周期管理的重要组成部分
2.2.1.1.(Application Lifecycle Management,ALM)
2.2.2.20及以上的分数颜色级别为绿色
2.2.2.1.良好的维护性
2.2.3.10分到19分的分数颜色级别为黄色
2.2.3.1.中等维护性
2.2.4.小于10分的分数颜色级别为红色
2.2.4.1.难以维护
2.3.圈复杂度
- 2.3.1.路径越多,软件就越复杂
2.4.继承深度
2.4.1.相互继承类的数量的度量值
2.4.2.理想的继承深度为1
2.5.类耦合度
2.5.1.类的代码耦合度决定了类之间的耦合级别
2.5.2.基于接口编程
2.6.面向对象编程编程范式的影响
- 2.6.1.(Object-Oriented Programming,OOP)
2.7.代码行数
- 2.7.1.源代码行(包括空行)的完整统计数目
2.8.可执行代码行数
- 2.8.1.可执行代码中操作的数量
2.9.Visual Studio 自带
3.工具
3.1.使用快速操作
- 3.1.1.VS自带
3.2.JetBrains dotTrace
3.3.JetBrains ReSharper
3.4.JetBrains dotPeek
- 3.4.1.免费
3.5.JetBrains dotCover
3.6.JetBrains dotMemory
3.7.JetBrains 全家桶
3.8.Telerik JustDecompile
- 3.8.1.开源
4.单元测试
4.1.TDD绝对是提升程序能力的一个必要之选
- 4.1.1.Test-Driven Development
4.2.行为驱动开发(Behavior-Driven Development,BDD)
- 4.2.1.BDD是由TDD演进而来的一种软件开发方法。
4.3.软件越关键,就越需要重视单元测试技术(例如TDD和BDD)的使用
4.4.在代码开发阶段,程序员应该始终测试自己的代码
4.5.只有在代码完成并准备进入产品环境的前提下,“程序员永远不应该测试自己的代码”才是正确的
4.6.正确的规划和设计实质上会加快编码速度,尤其在考虑维护和扩展的情况下
4.6.1.凡事预则立,不预则废。
4.6.2.越早考虑谋划、考虑谋划越全面,后期应对变化越从容
4.7.单元测试不应当依赖在它之前运行的其他测试
4.8.单元测试最好在毫秒时间内完成
5.无法容忍缺陷的软件
5.1.处理私人和商业投资的金融系统
5.2.医疗设备
5.3.交通管理和导航系统的运输信号系统
5.4.空间飞行系统
5.5.武器系统
6.删除冗余
6.1.无用代码
- 6.1.1.冗余又没有调用者的代码
6.2.“噪声”注释
- 6.2.1.程序员都会为这些注释所扰
6.3.冗余测试
7.测试工具
7.1.MSTest
7.2.NUnit
7.3.测试框架
- 7.3.1.NUnit比MSTest提供了更加细粒度的测试方法和更好的性能
7.4.Moq
7.5.Rhino Mocks
7.6.测试替身框架
- 7.6.1.Moq比Rhion Mock更加易于学习和使用
7.7.SpecFlow
- 7.7.1.BDD框架