研发原则

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jjjwwwjjjwww/article/details/79982594

代码维护

  • Git规则之:写完而未经测试通过的节点禁止提交和推送;或者说,每一个提交节点都应当保证是可运行/交付的。
  • 应当妥善利用git的贮藏(stash)功能。
  • Do not refact code until it is available and stable.
  • 务必写详细的构建文档,保证任何一个对接者都能自行上手。
  • 写专业的代码,悄无声息(零warning)地正确编译。
  • 去掉工作空间中无用包对应的CMakeLists.txt,加快编译速度。
  • 本地尽量不留代码。
  • 在编写代码前,就应该规划好有多少个commit。

项目推进

  • 提测前要提交自测报告。
  • 算法的局限性(边界)必须如实清晰地告知开发/内容/产品的同事(both书面&会议交流)
  • 《亮剑》中李云龙对政委赵刚说,不用尽快落实,现在就落实。这就是执行力。
  • EVERY JOB SHOULD HAVE A BEGIN AND AN END.
  • 做出来和做好了,是两回事。
  • 行动前务必系统调研前人的做法。
  • 让系统沿着正确的方向持续演化。
  • Demo要分三种:正常表现,极限状况下的临界表现,hold不住时的表现。

调试和测试

  • 原则:先检查数据源是否正确。
    注:可能需要一些可视化处理(Matlab、ROS、python等)。
  • 代码测试务必考虑概率因素。
  • 警惕全局静态变量的误用。
  • 源码思考维度
    • 逻辑流
    • 变量初始化
    • 内存访问合法性保证
    • 数值类型转换
  • 控制变量法:分析问题时,借助相关因素表格。
  • 单步调试时,在逻辑分叉口设置断点,观察程序的运行线路。逻辑分叉口包括if前后,return前后,等等。
  • 每次解决多个文件中的一个问题,而不是每次解决一个文件中的多个问题。

设计

  • 保持抽象层次一致。
  • 保持接口稳定。
  • 算法内部不要向应用层显示调试信息。
  • 用戶界面的相關功能應該單獨封裝得到一個類,流動在這個類中的數據不會是核心數據。
  • 以函数为基本单位,进行功能的分层组装和聚合。
  • 好的设计让用户没有犯错的机会。
  • 设计解决方案的时候,将重点定位于有效性和逻辑严密性,不要过多关注可实现性。
  • 欲做出创新性的工作,既要独立思考,也要阅读文档。
    注:一个客观的事实是,创新不那么多,多数时候,在应用现有的理论成果解决应用问题。

编码

  • 头文件包含按字母表排序。
  • 写死参数没有任何好处。
  • 宏定义的原则:让代码使用方免于误解和设置。

思维

  • 不要过早(武断)下结论。
  • 無論創業還是平常做事,要遵循的原則之一是:和懂規則的人在一起,更要做懂規則的人。
  • 系统思考维度
    • 工程配置
    • 参数设置
    • 数据源获取
    • 源码实现
  • 多尝试、多试错是一方面,从宏观上理顺思路是另一个方面
  • 大胆猜想、探秘,小心翼翼求证。
  • 一贯地坚持最小可交付原则。
  • 不写玩具代码,写的就都该是有用的。
  • 主动设计Demo展示算法的特性,吸引开发者。
  • 一贯地坚持是最强大的力量。

猜你喜欢

转载自blog.csdn.net/jjjwwwjjjwww/article/details/79982594
今日推荐