版权声明:本文为博主原创文章,未经博主允许不得转载。 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展示算法的特性,吸引开发者。
- 一贯地坚持是最强大的力量。