个人思考:如何在内核中写简洁代码

date
Mar 11, 2023
slug
thtwccik
tags
Thinking
summary
type
Post
status
Published
在读了Clean Code和Clean C++之后,我开始要求自己尽可能写可读性高,可维护性强的代码。但是当我在内核(数据库,操作系统)实践时,发现了一些理论和实践上“鸿沟”。

可读性

命名

Clean Code中举的例子都能很好的体现可读性,以至于我在写代码的时候总是希望自己也能够写出即使不懂的人也能看懂的代码。
但是我发现Linux中的代码存在:
  • 难以从子过程名称推断这个子过程做了什么事
  • 变量名缩写,不知道有什么用
而我自己也确实在写数据库过程遇到难以给一个子过程命名一个“即使不懂的人也能看懂“的名称。
我开始重新思考什么是可读性?代码是描述一个过程工具,即过程本身就是代码能够做到的最简过程。因此我认为可读性即是让能够看懂过程的人看懂代码。
对于业务代码,这种类型的过程很直观。
对于内核代码,有些过程是其他相同类型系统具备的(比如说数据库都存在parser,binder),但有些过程是specific的。
因此我认为对于内核,可读性只能是尽可能地贴近已有过程以及简单的过程。

注释

Clean Code中所提到的原则是尽可能不用注释,让代码能够自我解释。但内核中总会有些Specific的过程,此时注释就是无法避免的。所以要格外注意代码和注释的一致性。

总结

我认为对于内核而言,可读性是一个比较难以衡量的事情,不同人有不同的标准。可能对于熟悉Linux的人来说,rw_flag这类缩写很直观是read_write_flag。对于我个人而言,由于我对内核不熟悉,所以觉得它很难读。。。

可维护性

像Linux,Postgresql这类软件的维护性是经过实践验证的,因此其可维护性,如何模块化,如何抽象是更值得参照学习的。
 
💡
本人阅读的代码和写的代码很少,本文仅记录我自身对Clean Code的思考,欢迎讨论以及指出我的错误。

© ZENOTME 2021 - 2023