什么样的代码称得上是好代码?

软件自有其美感所在” --《重构》

3e68d7727959d060639830553bc5d352.jpeg

@图片:崇礼瀚海梁的山花  拍摄于2022年8月13日 @摄影师:刘先生

这篇内容写作于4年前(2018年),是自己多年软件开发工作的一点感悟,现在看来虽有偏颇,但总体思想方向上并没有改变,抽象是高层次代码的评判标准,诚然,过度的抽象会造成理解困难,但现实情况是,我们的开发人员对代码抽象层次普遍偏低,尽最大的能力向更高一层抽象,能够让代码提升一个水平。不仅仅是代码,整个软件开发过程,包括需求分析,产品设计,架构设计,都可以用抽象程度判断其工作水平的高低。

01

抽象是代码水平的标准

朋友指着自己写的代码问:你看我写的代码怎么样,有没有问题,哪里需要修改?

以宽泛的标准讲,只要代码没有逻辑错误,没有明显性能问题,就没有问题,但我知道,他问的不是这些,而是问代码有没有可以更进一步优化的可能,我看他的代码做了清晰的分层,提取了基类,使用了模板模式,总体上算是不错了。

问题来了,究竟什么样的代码算得上是好代码呢?

面对这个问题,可能大多数程序员首先想到的是:高内聚,低耦合,高效率,易维护,易扩展。这些是对的,但这些原则过于模糊,对大部分IT从业者(尤其是刚入行的新人)来说,无法通过一个具体的标准去衡量。

抛开框架和具体技术细节,单纯从编码的角度讲,依我的观点:

面向对象编程,考察的是抽象化的能力。

第一层级的抽象是类。

从实际业务需求入手,将现实世界中的事物,抽象成类,通过类,对象之间的相互调用,完成业务需求,这是面向对象编程最基础的抽象的能力。

第二层级的抽象是基类。

发现类之间的共性,提取基类,抽象类,基类负责处理共性的逻辑,子类负责处理个性的逻辑,从而实现代码的复用,逻辑更清晰,代码更易于维护。

再高一层级的抽象是接口。

接口定义一组标准规范,而不包含任何实现逻辑(C#8.0之后,接口也可以有默认实现了),因此,接口比抽象类的适用范围更广。面向对象开发原则中的“依赖倒置原则”,简单来说,就是要面向接口编程。

更高一层级的抽象是泛型。

为什么将泛型放到比基类和接口更高一层级,因为基类和接口,都只是对其继承者的单一类型的抽象,而泛型,是对多个相互协作类型的抽象,泛型不仅仅是对类型的抽象,还抽象出了多个类型间相互协作行为,正确的使用泛型,能够让代码变得更精炼,逻辑更严谨规范。

好了,以上四个层级,也是简单地给代码划分等级的标准,看看自己写的代码,处于哪一个层级呢。

02

后记

当然,并非所有的代码都需要提取基类,定义接口,任何规则都有适用范围。

以上关于抽象化的观点,算是自己多年从事软件开发的一点小小的感悟,希望对你有一定帮助。

更为大家广泛接受的,区分好代码的标准是“面向对象开发原则”和“设计模式”,强烈建议小伙伴们学习掌握,这里不做展开,有兴趣的朋友可以自行搜索。

喜欢的朋友可以点赞,转发,加关注

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值