编写可读代码的艺术chapter 1-6

本文详细阐述了提升代码可读性的核心原则,包括命名规范、注释策略以及风格一致性,旨在帮助开发者构建易于理解、维护的代码库。

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

表面层次的改进

1. 总章

可读性基本定理:代码应当易于理解,代码的写法应当使别人理解它的时间最小化。

2. 命名

1. 词汇表达含义尽可能的准确

int  size();
//size没有承载信息,应当根据实际情况求改为诸如:Height,NumNodes,MemoryBytes...
void stop();
//stop同样,可以考虑的词有pause,kill,resume...

2 . 选择更有表现力的单词

单词更多选择
senddeliver dispatch announce distribute route
findsearch extract locate recover
startlaunch create begin open
makecreate set up build generate compose add new

//尽量避免temp等名字,只用在那些短期存在且临时性的变量中
//为名字附带更多的信息
//但单位的变量可以避免很多错误
double start_ms;
double end_s;
//附带重要属性
html_utf8
//在小的作用域内使用短的名字
//不要使用字母缩写
//删除无用词汇
ConvertToString -> ToString
//类内成员命名,用一个统一的规法
int offste_;
int p_offset;

3 .选择表达范围的词汇

(min, max)
[first, last]
[start\begin, end)

3. 审美

  • 使用一致的布局,让读者很快就习惯这种风格
  • 让相似的代码看上去相似
  • 把相关的代码行分组,形成代码块
  • 留白、对齐、代码块、文法
  • 一致的风格优于“正确”的风格

4. 注释

注释的关键思想是:注释的目的是尽可能的帮助读者了解的信息和作者一样多。

1. 什么不需要注释

  • 不要为那些从代码本身就能快速推断的事实写注释
  • 不要为了注释而注释
  • 不给不好的名字加注释,先修改名字
  • 好代码 > 坏代码 + 好注释
int lonsl;
//find the node in the given subtree, with the given name,using the given depth
Node * FindNodeInSubTree(Node* subtree, string name, int depth);

//Find a node with the given 'name' or return NULL
//If depth <= 0, only 'subtree' is inspected
//If depth == N, only 'subtree' and N levels below are inspected
Node * FindNodeInSubTree(Node* subtree, string name, int depth);

2. 什么需要注释

  • 记录你的思想
//出乎意料的是,对于这些数据使用二叉树比用哈希表块40%
//作为整体可能会丢掉一些词,但是这没问题,要100%解决太困难了
//这个类正变得混乱,应该建立一个'name'子类来重构了
//TODO: 采用更快的算法
//HACK:对一个问题不得不采取粗糙的解决方案
//XXX:危险!这里有重要的问题
//给常量加注释,但是名字已经足够清楚不用
// as long as it is >= 2 * num_processors, that's good enough
const int NUM_THREADS = 8; 

一个好的方法帮助你添加好的注释是,站在读者的角度上:

  • 意料之中的提问
  • 公布可能的陷阱
  • 全局观注释:类之间如何交互,复杂算法的参考资料,算法实现思路
  • 总结性注释

3. 如何开始注释

  • 不管你心里在想什么,先写下来
  • 读一下这段注释,看看是否有改进的地方
  • 不断迭代改进

4. 言简意赅的注释

  • 格式紧凑
  • 避免不明确的代词
  • 润色粗糙的句子
  • 精确描述函数行为
  • 用输入/输出的例子来说明特别的情况
  • 注释高层次的代码,而非明显的细节
  • 嵌入式注释可以很好的注释函数的参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值