首页 > 其他分享 >NET 中的 12 个简单干净代码技巧

NET 中的 12 个简单干净代码技巧

时间:2024-07-07 09:01:49浏览次数:12  
标签:12 return 技巧 代码 public class user NET void

编写干净的代码对于可维护性、可读性和可扩展性至关重要。

这里有 12 个简单的技巧可以帮助您在 .Net 中编写更干净的代码,每个技巧都附有好的和坏的代码片段。

1. 使用有意义的名字

糟糕的代码

public class C
{
    public void M()
    {
        var a = 10;
        var b = 20;
        var c = a + b;
    }
}

好代码

public class Calculator
{
    public void AddNumbers()
    {
        var firstNumber = 10;
        var secondNumber = 20;
        var sum = firstNumber + secondNumber;
    }
}

**说明:**使用有意义的名称来解释变量、类或方法的用途。

2. 避免使用神奇数字

糟糕的代码

public double CalculateCircumference(double radius)
{
    return radius * 3.14 * 2;
}

好代码

public double CalculateCircumference(double radius)
{
    const double Pi = 3.14159;
    return radius * Pi * 2;
}

**说明:**使用常量作为魔法数字可以使代码更具可读性和可维护性。

3. 使用字符串插值

糟糕的代码

string name = "John";
int age = 30;
string message = "Name: " + name + ", Age: " + age;

好代码

string name = "John";
int age = 30;
string message = $"Name: {name}, Age: {age}";

**说明:**字符串插值比连接更具可读性且更易于管理。

4.避免深度嵌套

糟糕的代码

糟糕的代码

if (user != null)
{
    if (user.IsActive)
    {
        if (user.HasPermission)
        {
            // Do something
        }
    }
}

好代码

if (user == null || !user.IsActive || !user.HasPermission)
{
    return;
}

// Do something

**说明:**通过首先处理异常情况并尽早返回来扁平化您的代码。

5. 使用保护子句

糟糕的代码

public void ProcessOrder(Order order)
{
    if (order != null)
    {
        if (order.IsValid)
        {
            // Process order
        }
    }
}

好代码

public void ProcessOrder(Order order)
{
    if (order == null || !order.IsValid)
    {
        return;
    }
    // Process order
}

**说明:**解释:保护子句有助于减少嵌套并使代码更具可读性。

6.使用依赖注入

糟糕的代码

public class UserService
{
    private readonly UserRepository _userRepository = new UserRepository();

    public void CreateUser(User user)
    {
        _userRepository.Add(user);
    }
}

好代码

public class UserService
{
    private readonly IUserRepository _userRepository;

    public UserService(IUserRepository userRepository)
    {
        _userRepository = userRepository;
    }

    public void CreateUser(User user)
    {
        _userRepository.Add(user);
    }
}

**说明:**依赖注入通过分离依赖关系来提高可测试性和可维护性。

7.单一职责原则

糟糕的代码

public class User
{
    public void AddUserToDatabase(User user)
    {
        // Add user to database
    }

    public void SendWelcomeEmail(User user)
    {
        // Send email
    }
}

好代码

public class User
{
    public void AddToDatabase(UserRepository userRepository)
    {
        userRepository.Add(this);
    }
}

public class EmailService
{
    public void SendWelcomeEmail(User user)
    {
        // Send email
    }
}

**说明:**一个类应该有一个改变的原因。将关注点分成不同的类。

8. 使用 Async 和 Await 编写异步代码

糟糕的代码

public Task<string> GetData()
{
    return Task.Run(() =>
    {
        // Simulate long-running task
        Thread.Sleep(2000);
        return "Data";
    });
}

好代码

public async Task<string> GetData()
{
    await Task.Delay(2000); // Simulate long-running task
    return "Data";
}

**说明:**使用 async 和 await 可以获得更好的异步代码的可读性和性能。

9. 对简单条件使用三元运算符

糟糕的代码

string status;
if (isActive)
{
    status = "Active";
}
else
{
    status = "Inactive";
}

好代码

string status = isActive ? "Active" : "Inactive";

**说明:**三元运算符可以简化简单的条件赋值。

10. 封装条件

糟糕的代码

if (age > 18 && !isMember)
{
    // Do something
}

好代码

if (IsEligibleForOffer(age, isMember))
{
    // Do something
}
private bool IsEligibleForOffer(int age, bool isMember)
{
    return age > 18 && !isMember;
}

**说明:**将复杂的条件封装到方法中以提高可读性。

11. 避免对所有事物都使用静态类

糟糕的代码

public static class Utility
{
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

好代码

public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }
}

**说明:**仅当类无状态且仅用于实用功能时才使用静态类。

12. 优先使用组合而不是继承

糟糕的代码

public class Animal
{
    public void Eat() { }
    public void Sleep() { }
}
public class Dog : Animal
{
    public void Bark() { }
}

好代码

public class Animal
{
    public void Eat() { }
    public void Sleep() { }
}
public class Dog
{
    private readonly Animal _animal = new Animal();
    public void Bark() { }
    public void Eat() { _animal.Eat(); }
    public void Sleep() { _animal.Sleep(); }
}

**说明:**组合通常比继承更灵活且更易于管理。

结论

应用这些整洁代码原则可以显著提高代码质量,使其更易于阅读、维护和扩展。请记住,编写整洁代码是一项持续的实践,这些技巧是帮助您踏上这一旅程的良好起点。

标签:12,return,技巧,代码,public,class,user,NET,void
From: https://blog.csdn.net/xiefeng240601/article/details/140225179

相关文章

  • 数据恢复软件哪款好用?这 12 款专业数据恢复软件请收好!
    数据恢复软件哪款好用?在数字化时代,数据的重要性不言而喻。然而,由于各种原因,我们的数据可能会丢失或损坏,这时候就需要借助数据恢复软件来找回这些宝贵的信息。本文将为大家介绍12款专业数据恢复软件,帮助你在遇到数据丢失问题时,能够快速找到最适合自己的解决方案。数据恢复软件......
  • P1271 选举学生会【排序】
    【模板】排序题目描述将读入的NNN个数从小到大排序后输出。输入格式第一行为一个正整数N......
  • Solution - Atcoder ARC125E Snack
    观察到这种都是数量上限的限制,且求\(\max\)。所以可以考虑网络流建模,而流量就对应着给的糖果数。令\(S\)为源点,\(T\)为汇点,编号为\(1\simn\)的点对应的糖果的种类,编号为\(n+1\simn+m\)的点对应的小孩。连边\((S,i,a_i)\),表示第\(i\)种糖果数不超过\(a_i\)......
  • 记一次.NET引用性能分析 - 客户说关联权限后查询不出数据
    背景:有客户说操作员关联权限后,某个页面查询不出数据,不关联权限就可以现象:1、用带权限的账号登进去后,查询不出数据,F12发现报错,"Anerroroccurredwhileexecutingthecommanddefinition.Seetheinnerexceptionfordetails."         2、浏览器......
  • Java调用第三方接口的秘籍:技巧、案例与最佳实践
    Java调用第三方接口的秘籍:技巧、案例与最佳实践在Java开发中,调用第三方接口是一项常见的任务。无论是与外部系统交互、集成其他服务,还是调用远程API获取数据,掌握有效的第三方接口调用技巧都是至关重要的。本文将深入剖析Java调用第三方接口的常见方法和技巧,结合实际案例,展......
  • 【C++干货基地】C++模板深度解析:进阶技巧与高级特性掌握(按需实例化、全特化与偏特化)文
    ......
  • 公务员考试、事业编考试、教师资格证、面试、K12资料、电子书
    点击上方△@腾阳 关注作者l腾阳  转载请联系授权你好,我是腾阳。在这个自媒体的海洋里,我曾是一只迷失方向的小鸟,多次尝试飞翔却总是跌跌撞撞。但每一次跌倒,都让我更坚定地相信,只要不放弃,总有一天能够展翅高飞。这一次,我满怀激情,准备与大家分享我的故事和见解。......
  • netdot webapi发布centos stream 9 被dos攻击
    前言-刚刚发布一个demo一直被一个叼毛攻击,不停的扫描端口,弄得接口一访问就是503错误99元买了一个2核2g的服务器,1元钱买了一个服务器,有个人一直扫描我的端口安装一个 nginxdnfinstallnginx安装完成后启动nginx服务#启动systemctlstartnginx#设置开机自启动sys......
  • EtherCAT转Profinet网关配置说明第二讲:上位机软件配置
    EtherCAT协议转Profinet协议网关模块(XD-ECPNS20),不仅可以实现数据之间的通信,还可以实现不同系统之间的数据共享。EtherCAT协议转Profinet协议网关模块(XD-ECPNS20)具有高速传输的特点,因此通过EtherCAT转Profinet网关实现数据传输和控制时速度的提升。在大规模的工业自动化生产过程中,......
  • EtherCAT转Profinet网关配置说明第一讲:配置软件安装及介绍
     网关XD-ECPNS20为EtherCAT转Profinet协议网关,使EtherCAT协议和Profinet协议两种工业实时以太网网络之间双向传输IO数据。适用于具有EtherCAT协议网络与Profinet协议网络跨越网络界限进行数据交换的解决方案。本网关通过上位机来进行配置。首先安装上位机软件一、上位机......