C# 整洁代码:如何写出让同事看了不尴尬的代码

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么整洁代码关乎金钱而非美学

想象一下,你刚入职一家新公司,打开一个 C# 项目,看到一个长达 500 行的方法,变量名是 a、b、temp,注释则是中英文混杂。熟悉吗?很可能如此。这样的代码虽然能运行,但维护起来简直是噩梦。C# 整洁代码并非完美主义者的任性,而是一种能节省团队时间、精力和金钱的工具。

本文不会说教。相反,我们将探讨一些具体技巧,帮助您编写 C# 代码,使其既能让新手理解,也能让经验丰富的开发者满意。开始吧!



1. 命名至关重要:如何命名变量、方法和类

让代码更整洁的最简单方法就是使用有意义的名称。C# 区分大小写,但这不能成为使用 int x 或 string d 的借口。



变量:说明存储内容

糟糕的示例:

int d; // 这是什么?日期?距离?钱?string n; // 名字?编号?笔记本?

良好的示例:

int daysUntilDeadline;string userName;

规则很简单:如果一个月后,没有注释你就无法理解变量存储的内容,那这个名字就是糟糕的。避免使用像 usr 或 cnt 这样的缩写——它们虽然能节省一秒的输入时间,但会花费数分钟的阅读时间。



方法:动词 + 名词

方法代表一个动作。命名时应清晰表明其功能:

  • CalculateTotalPrice() — 计算总价;
  • SendEmailNotification() — 发送通知;
  • ValidateUserInput() — 验证用户输入。

糟糕的示例:ProcessData() — 过于抽象。“处理”是什么意思?删除?转换?保存?



类:使用单数或复数名词

类是一个实体。User、Order、PaymentProcessor。除非架构需要,否则避免使用像 Manager 或 Helper 这样的后缀。这些类往往会变成“垃圾场”,容纳各种杂项。



2. 方法应该短小精悍,只做一件事

整洁代码的黄金法则:一个方法应该解决一个问题,并且要解决好。如果一个方法超过 20-30 行,很可能需要拆分。



示例:重构“怪兽”方法

想象一个注册用户的方法:

public void RegisterUser(string name, string email){    // 验证    if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException();    if (!email.Contains("@")) throw new ArgumentException();    // 保存到数据库    using var db = new AppDbContext();    var user = new User { Name = name, Email = email };    db.Users.Add(user);    db.SaveChanges();    // 发送邮件    var smtp = new SmtpClient();    smtp.Send("admin@site.com", email, "Welcome", "Hello!");}

这里有什么问题?三个职责:验证、数据库操作、发送邮件。如果发送逻辑发生变化,就必须修改注册方法。我们来拆分一下:

public void RegisterUser(string name, string email){    ValidateUser(name, email);    var user = CreateUser(name, email);    SaveUser(user);    SendWelcomeEmail(email);}

private void ValidateUser(string name, string email){ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Name is required", nameof(name)); if (!email.Contains("@")) throw new ArgumentException("Invalid email", nameof(email));}

private User CreateUser(string name, string email){ return new User { Name = name, Email = email };}

private void SaveUser(User user){ using var db = new AppDbContext(); db.Users.Add(user); db.SaveCh

博客

书籍推荐