我感到很幸福 发表于 2023-3-24 11:21:27

读C#代码整洁之道笔记05_使用工具改善代码和单元测试


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框架

来源:https://www.cnblogs.com/lying7/archive/2023/03/24/17232198.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 读C#代码整洁之道笔记05_使用工具改善代码和单元测试