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

C#/.NET开发者系统学习指南:从语言基础到架构实战 C#作为面向对象的编程语言,其核心在于类型安全、内存管理和丰富的语法特性,为构建企业级应用提供了坚实基础。在.NET平台上,通过公共语言运行时(CLR)实现跨语言互操作和自动内存管理,结合ASP.NET Core等框架,开发者能够高效构建高性能的Web服务。掌握C#异步编程、LINQ查询和依赖注入等技术,不仅能提升代码的可维护性和性能,还能应对微服务、云原生等现代架构需求。本文聚焦于一套整合了C#语言核心、.NET平台框架、Web开发实战及架构设计模式的系统性学习资料,通过涵盖Entity Framewor 阅读详情

 

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

SonarQube问题修复实战:从Bug、漏洞到代码异味的系统化解决方案 静态代码分析是现代软件工程保障代码质量与安全的核心实践。其原理是通过预定义规则集对源代码进行自动化扫描,识别潜在缺陷、安全漏洞和不良模式。这项技术的核心价值在于将质量保障左移,在开发阶段早期发现问题,显著降低后期修复成本并提升软件可维护性。在持续集成、DevOps等工程实践中,静态分析已成为构建健壮交付流水线的关键环节。本文聚焦于静态分析工具SonarQube的实战应用,针对其报告中的Bug、安全漏洞和代码异味三大类问题,提供从原理剖析到具体修复的完整指南。文章深入解析了空指针解引用、SQL注入、XSS攻击 阅读详情

相关推荐

Go语言核心特性与实战:从并发编程到生产部署全解析

并发编程是现代软件开发的核心概念,它通过同时执行多个任务来提升系统吞吐量和响应速度。其原理通常基于线程或协程,配合通信机制实现数据同步。在工程实践中,高效的并发模型能显著提升网络服务、数据处理等场景的性能。Go语言通过goroutine和channel提供了简洁而强大的原生并发支持,使得开发者能够轻松构建高并发应用。本文聚焦于Go语言的并发模型、错误处理机制以及标准库工具链,结合goroutine和channel等热词,深入探讨如何利用这些特性编写健壮、高效的分布式系统与微服务。

leonard61306500的专栏 425

DotTrace学习入门之一

一、介绍 百度百科:dotTrace 是一个包含了可用于.NET应用程序的性能分析器(dotTrace Performance) 和内存分析器(dotTrace Memory)的套件。 dotTrace Performance可帮助用户对各种.NET框架内的应用程序的性能瓶颈进行检测,能够帮助.Net开发者以最快的方式找到并移除性能上的瓶颈。 dotTrace Memory 则能帮助用户发现内存泄露并能对基于.NET 4.0以上框架的应用程序进行内存占用优化。 二、安装 我下载安装的是破解版,链接

czjnoe的博客 4924

C#代码重构:5大技巧助你提升90%的代码质量!

🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀在软件开发的世界里,代码就像是一座不断成长的城市。随着时间的推移,城市里的建筑(即我们的代码)可能会变得杂乱无章,难以维护。这时,代码重构就像是对这座城市进行规划和优化,让其更加整洁、高效。今天,我们就来聊聊如何使用C#进行有效的代码重构,确保你的“城市”能够持续繁荣发展。

java专栏 485

(转).net反编译工具JustDecompile

开源的反编译工具JustDecompile https://www.telerik.com/blogs/justdecompile-engine-becomes-open-source https://www.cnblogs.com/shanyou/p/4491124.html JustDecompile是Telerik公司推出一个免费的.net反编译工...

weixin_34122604的博客 1297

JustDecompile 反编译工具,不需要注册

JustDecompile 反编译工具,不需要注册,解压即可使用

JustDecompile 反编译工具

Telerik的反编译工具,免费开源的....赚点积分而已,不想花积分的,请点击一下链接:http://www.telerik.com/download/justdecompile

4款免费且实用的.NET反编译工具

这四款免费的.NET反编译工具都非常不错,选择哪一款最终取决于每个人的偏好和需求,我个人主要使用ILSpy比较多,当然你假如不确定哪一款适合自己的话不妨都尝试一下,选择一款自己觉得最顺手的。请记住,合法使用这些工具并保护他人的知识产权是至关重要的。

专注于C#/.NET/.NET Core学习、工作、面试干货和实战教程分享。这里聚焦了大量的C#/.NET/.NET Core优质文章、开源项目、实用工具和学习、工作、面试心得。 2597

一款蛮好用的反编译工具--JustDecompile

一款蛮好用的反编译工具--JustDecompile,

使用.NET JustDecompile来反编译你的程序代码

前言   在项目的进行中有时会碰到需要去了解由第三方所开发的程序代码或者因为年久已经遗失原始码的程序,由于因为是别人写的所以我们并没有原始码可以直接阅读,碰到这种情况我们就需要去反编译这些程序及 DLL 档案。   首先大概介绍一下 DLL 是什么,DLL 全名是 Dynamic Linking Library (动态链接库),当你使用 .NET 开发应用程序时,使用的是网站项目或...

weixin_30469895的博客 619

.net反编译最新版JustDecompile 2018.2.803.0

最好用的 .net反编译软件 .net反编译最新版JustDecompile 2018.2.803.0 180930

Drupal远程代码执行漏洞(CVE-2018-7600)实战复现:从检测到写入WebShell的全过程

本文详细解析了Drupal远程代码执行漏洞(CVE-2018-7600)的实战复现过程,从环境搭建、漏洞检测到WebShell写入的全流程。该高危漏洞影响Drupal 6.x至8.x版本,允许攻击者未经授权执行任意代码。文章提供了多种POC构造方法和高级利用技巧,帮助安全研究人员深入理解漏洞原理并掌握验证技术。

weixin_29322553的博客 275

C#代码整洁之道读后总结与感想

柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。毕竟各人知识背景不一样,我觉得重要的地方,你不一定觉得,相反, 我觉得不重要的,也许你觉得就是亮点。以上的量化指标,简单明了,在编码实践中,如果能够贯彻执行,相信对于提升编码水平一定是大有裨益。和原文的推荐书籍不一样,读厚方向只是我感兴趣的,原文每个章节都有推荐书籍,更多、更详细。有时间、有精力的情况下,当然是要去读原文咯。

lyingSeven的博客 239

四十二、Fluent欧拉模型流化床模拟:从基础设置到颗粒动力学解析

本文详细解析了Fluent欧拉模型在流化床模拟中的应用,从基础概念到颗粒动力学设置全面覆盖。重点介绍了欧拉模型的颗粒温度概念、多相流配置技巧以及关键参数优化策略,帮助工程师准确模拟气固两相流动现象。通过实用案例演示了网格检查、求解器配置和边界条件设置的最佳实践。

weixin_27303545的博客 445

《代码整洁之道读书笔记》

第十三章《并发编程》感悟(2019.05.29) 为什么要并发 1.并发是一种解耦策略,它帮助我们把做什么(目的)和何时(时机)做分解开 2.解耦目的与时机能明显地改进应用程序的吞吐量和结构 3.单线程程序许多时间花在等待web套接字I/O结束上面,通过采用同时访问多个站点的多线程算法,就能改进性能 常见的迷思和误解 并发总能改进性能:只在多个线程或处理器之间能分享大量等待时间的时候管用 ...

不积跬步,无以至千里;不积小流,无以成江海。 810

营销反作弊之 异常行为分析模型(一),附带python代码

通过对用户行为进行深入的分析,识别出与常规模式不符的异常行为,可以有效检测并阻止虚假广告点击、刷单、点击欺诈等欺诈行为。本文将详细探讨营销反欺诈中异常行为分析的方法,介绍如何通过数据采集、清洗、行为建模与异常检测,准确识别潜在的欺诈行为,并提供 Python 实现代码示例。**监督学习 (Supervised Learning):**在标注数据的帮助下,训练机器学习模型使其能预测未知数据的结果。营销反欺诈异常行为分析的整体流程涉及多个环节,确保通过对用户行为的深入分析,及时识别潜在的欺诈行为。

viviwiky的博客 1230

Speedtree学习笔记(案例)——拥有多种材质的植物如何导入使用(以草为例)

注:Speedtree无论保存还是导入模型其存储路径不可有中文。 第一步拆分草的模型 根据所需的材质去拆分(例:假若草的果实,茎秆和叶子是不同的材质那么就需拆分为三份;假若画的全部颜色及材质一样就没有必要去拆分模型) 第二步导入草的模型 在Mesh面板中依次导入草的模型——Do nothing additional right now 第三步扩大草的生长区域范围(可省略)...

L人青的博客 5722

C++ 整洁代码教程(一)

如何做和让别人做同样重要。爱德华多·纳穆尔许多软件开发项目处于糟糕的状况,有些甚至可能处于严重的危机之中,这仍然是一个令人悲伤的现实。原因是多方面的。例如,一些项目因为糟糕的项目管理而受到影响。在其他项目中,条件和需求是不断变化的,但是过程不支持这种高动态的环境。在一些项目中有纯粹的技术原因:他们的代码质量很差。这并不一定意味着代码不能正常工作。它的外部质量,由质量保证部门使用黑盒、用户或验收测试来测量,可能相当高。它可以毫无怨言的通过 QA,检测报告上说他们没发现什么问题。

龙哥盟 1469

dolphinscheduler-3.4.0

dolphinscheduler集群部署

docsz的博客 660

.NET单元测试使用Bogus或AutoFixture按需填充的几种方式和最佳实践

以下是使用Bogus自动数据相关,因为AutoFixture填充数据通常数据如果不干预的话,填充的数据都不符合格式要求,而Bogus生成的数据不单单可以指定格式,而且还能根据locale生成不同文化的数据 因此更加推荐!它更适合于当你需要快速生成对象或数据以进行测试,但不需要过多关心数据的具体内容时。功能特点: Bogus 提供了大量预定义的数据生成方法,支持多种语言和地区设置,使得生成的数据更加真实、多样化。选择 Bogus :当你需要生成具体、真实感强的数据,或者需要精细控制生成数据的每一个细节。

chinaherolts2008的博客 152

36. 在 SAP Integration Suite 里打通入站 HTTP:iFlow 端点鉴权、角色授权与多节点 403 排障实战

本文探讨了SAP Cloud Integration中HTTP入站连接的认证与授权机制。在Cloud Foundry环境下,认证(证明身份)和授权(权限控制)需分开处理:认证可采用Basic、OAuth或mTLS等方式,授权则通过角色实现。文章详细解析了两种主流配置路径:基于IdP用户的Basic认证(需配置Role Collection)和基于OAuth Client/Service Instance的系统调用(通过Service Key管理权限)。特别指出ABAP系统在多节点环境下可能因cookie编码

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 322

二、NovAtel Connect 2.3.2 版本 操作说明

一、连接方式 有 串口连接、USB连接、蓝牙连接、无线网连接、网口连接,具体的连接方式看博客: https://blog.youkuaiyun.com/hltt3838/article/details/110622732 下面具体的介绍一下 串口的连接方式: 接收机有三个串口,COM1、COM2、COM3,看上面的连接就知道了! 并且有三个对应的线,1 2 3 ; 把线和串口对应连接,串口的另一端和电脑连接,当然如果电脑没有串口,可以用 串口转USB,如线图所示: (当然,一定要连接电源呀) ...

努力努力努力 4384

INFFUS 2025 | DDBFusion:基于双重分解和贝塞尔曲线的统一图像分解与融合框架

现有的图像融合算法大多集中于网络架构和损失函数的设计,采用统一的特征提取策略,却忽略了冗余信息和有效信息的划分。然而,对于互补信息而言,统一的特征提取器可能并不适用。因此,本文提出了一种基于贝塞尔曲线图像增强和分层分解的统一图像融合算法,并构建了一个自监督学习任务来学习有意义的信息。其中,贝塞尔曲线旨在模拟不同的图像特征,并构建特殊的自监督学习样本,因此作者的方法不需要特定任务的数据,并且可以在公共自然图像数据集上轻松进行训练。同时,作者的双重分解自监督训练方法可以为模型赋予冗余信息过滤能力。

小白学视觉 308

程序员必须掌握的核心技能有哪些?

程序员必须掌握的核心技能有哪些? 私下里,经常有一些读者问我:“小泉,作为一名软件开发者,我应该掌握哪些技能,才能被领导赏识呢?”说实话,我心目中很多选项,不少于 20 个,但我斟酌再三,只挑选了其中最能让你受益的 8 个,不仅能让...

m0_59162248的博客 739

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

linux编译器警告变成错误,警告就是错误

警告就是错误——高效程序员的45个习惯之习惯34“编译器的警告信息只不过是给过分小心和过于书呆子气的人看的。它们只是警告而已。如果导致的后果很严重,它们就是错误了,而且会导致无法通过编译。所以干脆忽略它们就是了。”当程序中出现一个编译错误时,编译器或是构建工具会拒绝产生可执行文件。我们别无选择——必须要先修正错误,再继续前行。然而,警告却是另外一种状况。即使代码编译时产生了警告,我们还是可以运行程...

weixin_35915157的博客 792

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ReSharper插件:.NET开发者的效率倍增器

在.NET开发的世界中,效率和代码质量是永恒的追求。ReSharper,由JetBrains公司开发的一款Visual Studio扩展,已经成为提升开发效率和改善代码质量的得力助手。本文将深入探讨ReSharper插件的一系列特性,以及它如何帮助开发者提高生产力。

Unity打怪升级 741

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: 读C#代码整洁之道笔记04_重构C#代码识别代码坏味道
下一篇: 读C#代码整洁之道笔记06_API的设计与开发
躺柒
博客等级 码龄4年 7004粉丝 1322原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值