news 2026/6/4 20:11:47

C#重构代码的8种基本方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#重构代码的8种基本方法

重构是指在不改变代码行为的情况下,提高代码的可读性、可维护性和效率的过程。本文介绍8种重构C#代码的基本方法。

1. 删除冗余代码

重构前

List<int> userIds = new List<int>();
userIds.AddRange(output.Select(s => s.UserId).Distinct().ToList());
userIds = userIds.Distinct().ToList();

重构后

var userIds = output.Select(s => s.UserId).Distinct().ToList();

2. 使用LINQ替代循环

重构前

List<int> evenNumbers = new List<int>();
foreach (var num in numbers) {
if (num % 2 == 0) {
evenNumbers.Add(num);
}
}

重构后

var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();

3. 避免重复代码(封装方法)

重构前

var segmentIDs = output.Select(s => s.SegmentID).Distinct().ToList();
if (segmentIDs.Any()) {
segments = db.CheckCode
.Where(c => segmentIDs.Contains(c.CheckCodeID))
.ToList();
}

重构后

List<int> GetDistinctIDs<T>(IEnumerable<T> source, Func<T, int?> selector) =>
source.Select(selector).Where(id => id.HasValue).Select(id => id.Value).Distinct().ToList();

4. 使用空合并和三元运算符

重构前

string name;
if (user != null && user.Name != null) {
name = user.Name;
} else {
name = "Unknown";
}

重构后

string name = user?.Name ?? "Unknown";

5. 使用var提升可读性

重构前

List<int> numbers = new List<int> { 1, 2, 3, 4 };

重构后

var numbers = new List<int> { 1, 2, 3, 4 };

6. 避免嵌套的if语句

重构前

if (user != null) {
if (user.Age > 18) {
Console.WriteLine("Adult");
}
}

重构后

if (user == null) return;
if (user.Age <= 18) return;
Console.WriteLine("Adult");

7. 使用字符串插值

重构前

string message = string.Format("Hello, {0}! You have {1} messages.", name, count);

重构后

string message = $"Hello, {name}! You have {count} messages.";

8. 使用async/await提升性能

重构前

public List<User> GetUsers() {
return db.Users.ToList();
}

重构后

public async Task<List<User>> GetUsersAsync() {
return await db.Users.ToListAsync();
}

总结

在代码重构时,应该始终遵循以下原则:

  • 可读性:代码应当易于理解。
  • 可维护性:让未来的开发者能够轻松修改代码。
  • 性能:避免不必要的计算和冗余操作。
  • DRY(不要重复自己):提取可复用的逻辑到方法中,提高代码复用性。

译文:csharp.com/article/learn-c-sharp-refactor-code

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 20:13:28

ResNet18优化案例:提升吞吐量的配置方法

ResNet18优化案例&#xff1a;提升吞吐量的配置方法 1. 背景与挑战&#xff1a;通用物体识别中的性能瓶颈 在当前AI应用广泛落地的背景下&#xff0c;通用图像分类已成为智能监控、内容审核、自动化标注等场景的核心能力。基于TorchVision官方实现的 ResNet-18 模型&#xff…

作者头像 李华
网站建设 2026/6/1 19:35:17

论文导师不会告诉你的内幕:8款AI工具轻松搞定毕业论文写作

90%的学生都不知道&#xff0c;你的导师可能也在用这些“黑科技”…… 你还在为开题报告抓耳挠腮&#xff0c;为文献综述通宵达旦&#xff0c;为降重查重愁眉不展吗&#xff1f;你以为那些“学术大神”真的是天赋异禀、精力无限&#xff1f;别傻了&#xff0c;这背后隐藏着一个…

作者头像 李华
网站建设 2026/5/30 6:13:58

拯救者Y7000 BIOS隐藏功能一键解锁完全指南

拯救者Y7000 BIOS隐藏功能一键解锁完全指南 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具&#xff0c;例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh_mirrors/le/LEGION_Y7000Series_…

作者头像 李华
网站建设 2026/5/28 23:33:47

微信逆向工程深度解析:基于wxhelper的功能扩展技术实践

微信逆向工程深度解析&#xff1a;基于wxhelper的功能扩展技术实践 【免费下载链接】wxhelper Hook WeChat / 微信逆向 项目地址: https://gitcode.com/gh_mirrors/wx/wxhelper 在PC端微信功能扩展领域&#xff0c;开发者常面临官方API限制与业务需求不匹配的技术困境。…

作者头像 李华
网站建设 2026/6/1 19:28:53

如何快速部署DataLink:解决异构数据源同步难题的完整指南

如何快速部署DataLink&#xff1a;解决异构数据源同步难题的完整指南 【免费下载链接】DataLink DataLink是一个满足各种异构数据源之间的实时增量同步、离线全量同步&#xff0c;分布式、可扩展的数据交换平台。 项目地址: https://gitcode.com/gh_mirrors/da/DataLink …

作者头像 李华
网站建设 2026/5/31 14:36:17

Windows 10安卓子系统完整指南:无需升级畅享Android生态

Windows 10安卓子系统完整指南&#xff1a;无需升级畅享Android生态 【免费下载链接】WSA-Windows-10 This is a backport of Windows Subsystem for Android to Windows 10. 项目地址: https://gitcode.com/gh_mirrors/ws/WSA-Windows-10 还在为Windows 10无法运行And…

作者头像 李华