热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

后端系统开发之gflags使用规范

任何好用的工具如果使用不当都会带来不好的后果,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,代码审查)被细心的同事指出,避免了一次踩坑。这是那段令我难忘的代码的样子:

后端系统开发之gflags使用规范

在这个例子中同时出现了与、或、非这3个逻辑运算,它是工程中真实存在的代码,绝非由我杜撰。此时gflags a、b、c、d的值都是false,现在的任务是删除这些旧的gflags和它们包住的代码,应该保留哪部分代码呢?如果你和我一样忘记了或运算||和与运算&&谁的优先级更高,那么掉到坑里的概率非常大。言归正传,我们有很多方法避免这样的代码出现,gflags绝不应该参与复杂的逻辑运算。

规范5:公共模块的gflags应尽快删除。

公共模块的gflags在上线运行一段时间后,应尽快删除,理想的情况是公共模块都没有gflags包含。这样做的理由是使用公共模块往往不知道这些gflags的存在,非常容易留坑。

规范6:不要在单元测试代码中使用gflags。

如果UT(UnitTest,单元测试)代码里用到了gflags,情况会变得复杂,在删除旧的gflags时需要同步修改单元测试代码,否则会导致测试失败,jenkins上的任务会变红(即测试失败)。因此,最好不要在单元测试代码里使用gflags。

规范7:提交代码时,应记录新增或删除的gflags配置。

这样的好处是方便测试的同事进行测试,这样利人利己的规范是非常值得遵守的。

最后,我把这7条规范总结并整理成一张图片,欢迎大家留言补充更多、更好的gflags使用规范。 

后端系统开发之gflags使用规范

金句分享

人的天性之一,就是不会接受别人的批评,总是认为自己永远是对的,喜欢找各种各样的借口为自己辩解。

——出自《人性的弱点》,戴尔·卡耐基(Dale Carnegie),美国著名人际关系学大师。

解读:永远不要批评别人,因为指责只不过是在浪费自己和他人的时间,应该换种方式去沟通和解决问题。

后端系统开发之gflags使用规范

后端系统开发之gflags使用规范


推荐阅读
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • 在 .NET Core MVC 应用中,某页面在使用 IIS Express 和 IIS 进行调试时均能正常运行,但在发布后出现了 500 内部服务器错误。尽管在代码中添加了异常处理逻辑,但在 `return View(department)` 时并未捕获到任何异常,仅显示 500 错误,且没有任何其他详细的错误信息。这可能与发布环境的配置或依赖项有关,建议检查日志文件和配置设置以进一步诊断问题。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • 系统转换的三种方法及其具体应用分析
    系统转换是信息技术领域中常见的任务,本文详细探讨了三种主要的系统转换方法及其具体应用场景。这些方法包括:代码迁移、数据迁移和平台迁移。文章通过实例分析了每种方法的优势和局限性,并提供了实际操作中的注意事项和技术要点。例如,代码迁移适用于从VB6获取网页源码,数据迁移在Ubuntu中用于隐藏侧边栏,而平台迁移则涉及Tomcat 6.0的使用和谷歌爬虫的测试。此外,文章还讨论了蓝翰互动PHP面试和5118 SEO工具在系统转换中的应用,为读者提供了全面的技术参考。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 在A文件中,若需通过 `$this->display()` 方法调用另一个类文件中的函数,可以通过以下步骤实现:首先确保目标类已正确引入或自动加载,然后在A文件中实例化该类,并通过实例对象调用所需方法。此方法适用于PHP环境。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • Cisco OSI 软件更新指南:详细步骤与最佳实践
    Cisco OSI软件更新指南提供了详细的步骤和最佳实践,帮助用户高效、安全地完成软件升级。本文不仅涵盖了更新前的准备工作,还详细介绍了更新过程中的关键步骤和注意事项,确保系统稳定性和安全性。此外,还提供了故障排除和验证方法,以确保更新后的系统运行正常。 ... [详细]
  • 利用 Jenkins、Ansible 插件和 Ansicolor 实现彩色输出结果
    通过配置 Jenkins、Ansible 插件和 Ansicolor,实现任务执行结果的彩色输出。首先,安装 Jenkins 并配置相关环境。接着,安装 Ansible Plugin 和 AnsiColor Plugin 以增强功能。最后,设置 Jenkins 作业,使 Ansible 的执行结果以彩色形式展示,提高日志可读性和问题排查效率。 ... [详细]
  • Jenkins学习精华:自动化构建与持续集成入门指南
    本文综合了网络资源及同事分享的PPT内容,详细介绍了Jenkins在自动化构建与持续集成中的应用。首先涵盖了Jenkins的安装与配置流程,接着阐述了如何根据项目需求设定自动化编译任务,包括确定开发环境、选择合适的编译工具以及实现代码的自动更新等关键步骤。特别强调了在SVN环境中通过命令行实现代码自动拉取的最佳实践。 ... [详细]
  • 在Windows 10环境中通过单个Tomcat实例部署两个Web应用项目
    在Windows 10环境下,本文详细介绍了如何通过单一Tomcat实例部署两个Web应用项目。首先,准备所需的两个WAR包,分别为jprss.war和jenkins.war。接着,文章逐步讲解了具体的配置和操作步骤,确保两个项目能够顺利运行。最后,验证了两个应用项目的成功部署和正常运行。 ... [详细]
author-avatar
or70woo
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有