任何好用的工具如果使用不当都会带来不好的后果,gflags也是一样。我遇到过一些gflags的“坑”,还从领导和同事那里获得一些好的想法,整理成7条gflags使用规范。有意识的遵循这些规范,对项目的开发维护和自身的技术成长都将有很大的益处。
规范1:bool类型的gflags默认值设置成false,防止误启用新功能。
新的功能上线一定要经过代码审查、测试和验证流程,默认为true的gflags风险太大。
规范2:应定时清理旧的gflags。
随着时间的流逝,代码里的gflags会越来越多,当你的工程代码里包含成百上千行的gflags时,阅读和维护代码的体验简直是太过酸爽。非常有必要定时删除代码中旧的gflags,根据其开关打开(true)和关闭(false)情况来删除gflags及其相关代码。
规范3:清理旧的gflags时应同时删除相应的gflags配置,以保证线上配置的整洁。
配置文件和代码保持同步是一种非常好的开发和维护体验。
规范4:if语句中应尽量避免gflags参与逻辑运算。
当if语句中出现与gflags相关的与、或、非逻辑运算时,事情就会变得复杂起来,gflags的开关状态不再是唯一的决定因素,代码阅读和删除gflags也会变得十分困难。我曾经删错过一个旧的gflags,幸运的是在CR阶段(CodeReview,代码审查)被细心的同事指出,避免了一次踩坑。这是那段令我难忘的代码的样子: