HiSDP一个高效的C++软件开发平台

  在决定使用C ++编程语言开发软件时,下一个问题是软件库,平台和框架的选择。当然,估计选择范围主要来自开源软件。此外,有两种不同的想法:

  根据软件开发的需要选择合适的开源软件,然后结合这些开源软件完成软件开发工作。这种方法的问题在于,将开源软件放在一起需要一定的努力。此外,在开放源码软件中踩入凹坑可能导致最终软件产品的稳定期较长,后期维护成本较高。

  采用市场上成熟的大型开源软件项目,并根据项目开发的需要进行定制。这种方法虽然需要消耗一定的能量(这是一次性的工作内容),但由于成熟的大型项目,以确保质量的各种开源组件的选择得到了充分的验证,否则我们不能坑,和使用开源软件代码可以发挥示范作用,帮助工程师快速分发更多的地面质量的代码。HiSDP就是基于这个想法!

  HiSDP来自Google的Chromium开源软件,这是您经常使用的Chrome浏览器的开源版本。由于作者一直致力于基于淘宝浏览器和UC浏览器计算机版本的Chromium软件开发大约3年半,因此他对Google的工程理念和Chromium背后的工程质量要求有着深刻的理解。体感,

  包含但不限于:

  严重依赖于单元测试。Chromium已经为单元测试代码的组织和实践形成了一套有效且易于使用的工程规范,它演示了如何通过gtest/gmock编写单元测试代码,并将执行单元测试的行为与开发环境无缝集成。

  特别注意程序性能度量。谷歌长期以来一直推动Chrome在速度上领先于竞争对手。它非常强调性能数据的可视化,而性能数据就是在这样的上下文中显示的。(浏览Chrome到'chrome'://tracing,这是一个显示浏览器打开的网页性能跟踪的网站。)

  非常关注程序的编译效率。由于Chromium的代码大小非常大,因此该项目从一开始就不断优化整个项目的编译速度。除了gn + ninja编译工具组合之外,Chromium的代码组织和程序格式也经过标准化和精心实施,以加快编译速度。

  把程序的错误检查作为一个好的编程习惯。整个chromium代码在关键点上充满了dcheck(类似于assert)和check(生成转储文件并记录问题的场景)。

  严格执行以谷歌C编码风格定义的编码规范。为了帮助初学者更好地处理规范,甚至还有像cpplint(用Python实现)这样的代码规范扫描工具。

  软件设计质量的终极追求。 Chrome浏览器在大约6周内有一个大版本,每个版本都可以看到以前失败的完美痕迹。一些改进足以让人感到感动。这种工程实践的结果是Chromium的整体代码质量很高并且经过验证。

  基于我对铬的理解,我自然想到把这些能力和气质带到其他项目中,希望“站在巨人的肩膀上”和“用牛刀杀死鸡”来开发其他C++软件。

  HiSDP是生产力软件开发平台的缩写。该名称的目的是为C编程语言提供一个高效的软件开发平台。然而,在为HiSDP定制Chromium以供在组服务器环境中使用方面,还存在一些起伏。最大的问题是Chromium开发环境基本上是基于Ubuntu 16.04构建的。存在内核版本高于组环境的问题,导致直接正常运行。当然,经过很多努力,这个问题已经解决了。

  能力

  跨Windows,Mac和Linux操作系统的软件开发功能。 HiSDP完全保留了Chomium基础库,它抽象并封装了文件,字符串,线程,进程,消息循环,内存,分析等,可以很好地满足其他软件开发工作的基本需求。

  具有高效的源代码组织能力和复杂项目的快速建设能力。源文件通过gn文件(类似于makelists.txt文件)进行管理;编译器通过ninja(类似于make)进行调用;第三方Git存储库依赖于DEPS文件管理项目。可以想象,gn文件的语法充分考虑了跨平台场景中源代码的组织。随着工程规模的增加,施工速度将越来越明显。

  使用Chromium全面重用各种开发工具。Chromium将工具放在一个名为depot_tools的单独Git存储库中,其中包括支持有效软件开发工作的搭建工具。

  实现开发软件和HiSDP本身的良好解耦。通过引入HiApp的概念,基于HiSDP开发的软件的源代码被放置在单独的Git存储库中,HiApp与该仓库链接以实现与HiSDP的代码组合。以下命令显示了如何获取depot_tools,HiSDP和LogAgent的代码,并希望有助于理解HiApp的概念。

  简单地说,Depot_工具和HISDP的开发经验与Chromium完全相同。

  价值

  解决“技术可以,发展不能”的现象。当个人对软件工程没有足够的了解时,不清楚除了编程语言和算法外,还有其他关键因素影响开发效率和最终的软件质量。届时会显示出“技术可以,开发不能”,即各种技术知识都知道,但不能有效进行软件开发工作。hisdp是一个学习的好地方,因为它继承了铬沉淀了十多年的工程经验。即使它一开始不知道这样做背后的概念,它最终也可能通过模仿来理解。

  帮助跨平台软件开发。由于对开发在Windows,Mac和Linux上运行的软件的自然支持,HiApp因为这样的“基础”而更容易实现跨平台开发。

  提高软件开发效率。这是显而易见的。围绕项目各个方面的脚手架已经可以在HISPP上使用,只关注HIAPP开发中需要解决的业务问题。

  版本依赖是通过代码共享来解决的。与大多数c++程序员所希望的不同,hisdp不是以库的形式呈现,而是完全是源代码。随着hiapp的概念,开发的软件的源代码也成为hisdp的一部分。此表单消除了以库的形式发布所引起的版本升级和同步的问题。当hisdp修复缺陷时,hiapp开发者通过池的最新代码修复缺陷。如果读者考虑到这一点,就会对它的价值有更深的了解。

  挑战

  正如“世界上没有免费午餐”所表达的理念,当我们享受HiSDP带来的优势时,我们必须面对一些挑战。掌握HiSDP需要一定的时间,入门门槛相对较高。 。不可否认,这一挑战需要个别工程师通过学习来处理它,并且即使在开始之后也需要保持学习过程,因为HiSDP确实是一个巨大的知识宝库,从技术和工程领域中获得了很多灵感。获得参考和解决方案非常值得。

  最后,LogAgent在刚刚过去的2018财政年度与HISDP一起,很好地演绎了“牛刀杀鸡”的工程理念。

posted @ 2019-06-21 11:17  露露嘻嘻嘻  阅读(505)  评论(0编辑  收藏  举报