news 2026/6/15 12:24:00

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/6/10 14:45:13

释放潜能:联想拯救者BIOS隐藏功能实战手册

释放潜能&#xff1a;联想拯救者BIOS隐藏功能实战手册 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具&#xff0c;例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh_mirrors/le/LEGION_Y7…

作者头像 李华
网站建设 2026/6/14 14:55:06

IDM激活脚本完全攻略:从入门到精通的技术解析

IDM激活脚本完全攻略&#xff1a;从入门到精通的技术解析 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 你是否曾为Internet Download Manager的试用期限制而烦…

作者头像 李华
网站建设 2026/6/14 18:28:38

零样本分类优化教程:如何定义更有效的标签?

零样本分类优化教程&#xff1a;如何定义更有效的标签&#xff1f; 1. 引言&#xff1a;AI 万能分类器的崛起与挑战 在当今信息爆炸的时代&#xff0c;文本数据的自动分类已成为企业智能化运营的核心需求。无论是客服工单、用户反馈、新闻资讯还是社交媒体内容&#xff0c;都…

作者头像 李华
网站建设 2026/6/4 23:58:06

PWM调速在毛球修剪器电路图中的实现:项目应用详解

PWM调速如何让毛球修剪器更安静、更省电&#xff1f;一文讲透电路设计核心你有没有用过那种一开机就“嗡”一声震手的毛球修剪器&#xff1f;转速固定、噪音大、剪厚呢料还容易卡刀——这其实是传统线性调速方案的老毛病。而如今稍上点档次的小家电&#xff0c;早已悄悄换上了P…

作者头像 李华
网站建设 2026/6/8 10:24:16

终极alt-tab-macos窗口管理完全指南:从新手到高手的进阶之路

终极alt-tab-macos窗口管理完全指南&#xff1a;从新手到高手的进阶之路 【免费下载链接】alt-tab-macos Windows alt-tab on macOS 项目地址: https://gitcode.com/gh_mirrors/al/alt-tab-macos 还在为macOS上繁琐的窗口切换而烦恼吗&#xff1f;alt-tab-macos 将Wind…

作者头像 李华
网站建设 2026/6/6 17:51:13

ResNet18图像分类5分钟上手:没GPU笔记本也能跑起来

ResNet18图像分类5分钟上手&#xff1a;没GPU笔记本也能跑起来 引言 想象一下&#xff0c;如果你能用普通的笔记本电脑&#xff0c;在5分钟内教会AI识别猫狗照片、区分花朵种类&#xff0c;甚至判断X光片是否正常——这就是ResNet18图像分类模型的魅力。作为中学信息技术老师…

作者头像 李华