首页 > 资讯 > 综合 > 正文

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

2023-03-24 09:07:49来源:博客园  

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

关键词:

责任编辑:hnmd003

精彩推送