现代编译器的可读性胜过调试

编写代码时,您的首要任务应该是可读性。大量时间花在调试和维护代码上,通常远远超过最初编写代码所花费的时间。因此,使该过程高效是必不可少的。考虑到未来人类读者的需求(可能是你,当然!)比试图让代码“高效”更重要——这项工作主要可以留给现代编译器。
这种考虑意味着代码应该非常仔细地格式化和对齐,并且语言结构应该尽可能简单和透明。有许多已发布的指南可以帮助解决这些问题。但是,创建可读代码并不止于此。
当你编译代码时,编程语言被翻译成机器指令。这是显而易见的。然而,编译器实际接收的是一个字符流;有些是实际代码,但可能有一些不打算翻译的块,其他文本可能仅供人类使用:
文档——代码中的注释
临时删除的代码——调试过程的一部分,但它可能会持续存在
特殊调试/跟踪代码
每一个的实现都会对可读性产生一些影响。
文档
每个人都知道评论是个好主意,但我们大多数人都很懒惰。但是,一些努力是非常值得的。旧式/*.。.*/注释符号是可以接受的,但新的行尾//。..形式更清晰。仍然需要护理。例如:
int number; // input count
char c; // single character buffer
char buffer[99]; // the input line
很难跟上。对齐就是一切:
int number; // input count
char c; // single character buffer
char buffer[99]; // the input line
并且不要使用标签;它们不是便携式的。
临时代码删除
在软件开发过程中,想要对编译器“隐藏”部分代码——将其关闭——并不少见。执行此操作的传统方法是“注释掉”——在代码前加/* ,在后加*/。虽然做起来很快,但它很容易失效,因为编译器不一定支持注释嵌套。较新的//表示法稍微好一点,但应用和删除很繁琐,并且仍然容易出错。
实现此结果的最佳方法是使用预处理器指令,因此:
#if 0
#endif
debug/trace code
a particular kind of temporarily visible code is instrumentation – extra code added for debugging and/or tracing. although modern debuggers and tracing tools can do a remarkable job, sometimes instrumenting the code is the only way to glean visibility and figure out exactly what is happening.
the usual way to accommodate this need is using pre-processor directives, as before, but using a symbol to switch them on and off:
#ifdef debug_trace
#endif
so, when the symbol debug_trace is defined, the debug code is included.
a slightly different approach is to code it like this:
#ifndef ndebug
#endif
although this double negative does seem confusing, some consistency is introduced, as this symbol is used to enable the standard assert() macro. the symbol needs to be defined to suppress debug mode.


vivo Y52s 5G新机曝光:搭载天玑720
M12连接器3芯使用寿命决定因素是什么
2017年LTE网络十亿设备将面BYOD安全威胁
详述不用c++写网页的理由
鸿蒙2.0来了,推出超级终端概念
现代编译器的可读性胜过调试
千兆位设备在PCB信号完整性设计中的应用解析
这次不限量!华为Mate8开放EMUI5.0升级!
肉制品检测仪器设备的参数介绍以及应用领域
焊接切割操作触电事故的原因及预防措施
Real World CTF技术论坛将启 极客嘉年华重磅来袭
颜值与音质兼得,南卡N2S真无线蓝牙耳机体验报告测评
印度市场份额上升 OPPO和vivo强势复苏
LED虚拟拍摄显示屏:电影制作的新革命
基于射频波束赋形改善TD-LTE蜂窝小区边缘性能
欧胜音频中枢被夏普应用于其最新智能手机和平板设备
影院级的听觉享受,索尼Soundbar HT-NT5一周体验有感
Avago推三款车用R2Coupler隔离光耦合器产品
恒大旗下星络家居发布智能家居产品
三星W20 5G正式入网工信部,产品的配置参数曝光