Clean Code学习总结

本文分享了编程中的实用建议,包括代码整洁、命名规范、函数设计、注释编写、格式规范等,强调良好的编程习惯对于软件质量和维护的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 整洁代码

代码逻辑直截了当;尽量减少依赖关系;依据某种分层战略完善错误处理代码;性能达到最优;

2 有意义的命名

1)名副其实;2)避免误导;3)做有意义的区分;4)方法名应该是动词,如deletePage或者save

3 函数

函数应该尽量短小;它应该只做一件事,做好一件事;
每个函数一个抽象层次:自顶向下读代码。每个函数都跟着位于下一个抽象级的函数。
使用描述性的名称;
抽离try/catch代码块:

public void delete(Page page)
{
  try
  {  
    deletePageAndAllReferences(page);
  }catch(Exception e){}
}
private void deletePageAndAllRefernces() throws Exceptions{
    deletePage(page);
    registry.deleteReference(page.name);
}

delete函数只处理异常,deletePageAndAllRefernces函数只完全删除一个page有关。
减少函数代码的重复。

4 注释

法律信息;提供信息的注释;对意图的解释;TODO注释用来保存程序员应该做但是某些原因还没做的事情。

5 格式

1)概念间垂直方向上的区隔,紧密概念垂直方向靠近。
2)变量声明尽量靠近使用位置。
3)相关函数应该放在一起。
4)概念相关的代码应该放在一起。

6 对象和数据结构

1)数据抽象
隐藏实现并非只是在变量之间放上一个函数层那么简单。隐藏实现关乎抽象。类并不简单的取值器和赋值器将其变量推向外间,而是暴露抽象接口。以便用户无需了解数据的实现就能操作数据本体。

具象机动车
public interface Vehicle{
    double getFuelTankCapacityInGallons();
    double getGallonsofGas();
}
抽象机动车
public interface vehicle{
    double getPercentFuelRemianing(){}
}

2)数据,对象的反对称性
对象把数据隐藏在抽象之后,曝露操作数据的函数;数据结构曝露其数据,没有提供有意义的函数。Geometry操作形状类,形状类都是简单的数据结构,没有任何行为。

过程式形状代码
public class Squire
{
    public Point topLeft;
    public double side;
};
public class Geometry
{
    public final double PI=3.14;
    public double area(object shape) throws NoSuchShapeException{
        if(shape instaceof Squire){
            Squire s=(Squire) shape;
            return s.side*s.side
        }
        ...
    }
};
面向对象的方案
public class Squire implements Shape
{
    private Point topLeft;
    private double side;
    public double area(){
        return side*side;
    }
};

过程式代码(使用数据结构的代码)便于在不改动既有数据结构的前提下添加新函数。面向对象代码便于在不改动既有函数的前提下添加新类。
3)the Law of Demeter
方法不应该调用任何函数返回的对象的方法。但是类只是数据结构,没有任何行为,该定律不再适用。

10 类

1)公共静态变量应该先出现,其次是私有静态变量,以及私有实体变量。
2)单一权责原则(SRP)
3)大函数拆分成小函数,据此将类拆分成小类。
4)为了修改而组织。

一组必须打开修改的类
public class Sql
{
    public Sql();
    public string create()
    public string selectALl()
};
一组封闭类
abstarct public class Sql
{
    public Sql(){}
    abstract public String generate();
};
public class CreateSql extends Sql
{
    public CreateSql();
    @override public String generate()
};

11 系统

IOC实现分离构造和使用。Spring 框架提供了最有名的Java DI容器。用户在XML配置文件中定义相互关联的对象,然后Java代码请求特定的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值