19 Star 173 Fork 280

飞行器智能感知与控制 / learn_programming

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 6.39 KB
一键复制 编辑 原始数据 按行查看 历史
布树辉 提交于 2023-06-27 06:59 . Add project sample; QtCreator

编程高级技巧

通过前面的学习与练习,能够编写一些简单的程序,但是编写大型程序除了算法、编程基础之外,还需要项目、库组织、编程规范、设计模式等技巧。这些技巧不仅仅能提高效率,而且是完善计算机思维的一个重要的环节。

0. 代码重构

通过前面的学习,把C++基础、数据结构与算法、LeetCode练习题、小项目,已经能够完成一个独立的小工程,并能解决实际问题。大部分情况下,第一次写完的程序,虽然已经实现了功能,但是往往存在如下的问题:

  • 程序命名不规范

  • 逻辑、功能比较混乱,代码不够清晰

  • 文件组织混乱,代码、数据等混杂

  • 程序里有很多固定的路径、常数等,不方便移植,无法在其他人的电脑上运行

  • 使用全局变量

为了更进一步提升自己的编程能力,需要通过多次的代码重构提升自己的综合能力。主要的内容包括:

  • 如何把自己代码写的更规范:命名、格式、函数、类等。
    • 参考《编码规范》,将自己写过的代码按照规范进行格式、写法的调整
  • 琢磨如何将前面所写的代码进行重构,如何提高代码的复用能力
    • 思考程序哪里写的不好,不容易理解,如何才能更好理解
    • 程序是否结构不清晰,如何分割成更好的函数、类
    • 思考那些函数、类是可以复用的,可以写成头文件
    • 可以参考下面的设计模式
  • 如何利用CMakePICMake将所有的代码组织起来,一次将自己编写的代码自动编译出来
  • 研究、学习如何将常用的函数、类组织到一个代码库,后续直接使用
    • 分析哪些函数、类可以复用,将可以复用的写成库
  • 如何让代码更清晰易懂,在什么地方用什么设计模式
    • 分析程序常用几种写法、模式,学习设计模式
    • 按照设计模式的方法,将自己的程序优化一下
  • 借鉴学习《示例项目》,学习如何组织项目,如何使用第三方库,以及设计模式

关于代码重构可以借鉴学习如下的项目:

1. CMake与库

前面的程序由于比较简单,都是单个源文件,所以不需要复杂的项目管理,但是实际用到的程序,大多数包含非常多的各种类型源文件,因此导致编译、第三方库、跨平台等许多问题。目前大部分的开源项目使用CMake来组织代码的编译,因此非常有必要学会CMake,主要的目的有:1)解决别人程序的编译问题;2)自己的程序用CMake组织起来,自己方便,如果开源也方便其他人。

可以通过这个目录里面的示例项目来学习CMake,库的使用方法,通过这个学习如何将功能模块进行层次划分、并进行有效的组织。

  1. 通过CMake,PICMake管理项目
    • 研究、学习如何将常用的函数、类组织到一个代码库,后续直接使用
    • 需要思考哪些代码能够放入库中,如何有效的组织代码的目录层级关系
    • 静态库
    • 动态库

2. 编程规范

对于不同的编程语言来说,具体的编码规范可以有很大的不同,但是其宗旨都是一致的,就是保证代码在高质量完成需求的同时具备良好的可读性、可维护性。例如我们可以规定某个项目的C语言程序要遵循这样的规定:变量的命名,头文件的书写和#include 等等。

编程规范只能在多写程序的基础上,通过不断的反思、总结才能形成。另外可以参考一个比较好的开源程序,学习它的代码规范。最基本的原则包括:

  1. 命名规范
  2. 文件排版,格式等
  3. 注释
  4. 函数、类的使用
  5. 错误处理

Google的编程规范大家可以作为主要的参考: code standard

更多参考:

3. 示例项目与说明

4. 设计模式

设计模式(Design Pattern)代表了最佳的实践,在面向对象的编程中被很多老鸟们反复使用。使用设计模式有很多好处:

  • 可重用代码
  • 保证代码可靠性
  • 使代码更易被他人理解

毫无疑问,设计模式于己、于人、于系统都是多赢的。《设计模式》之于程序员,就好比《圣_o_经》之于_o_耶_o_稣_o_信徒一样,意义可想而知!大家在编程练习过程需要多思考自己写的代码如何用更好的代码组织方式,能否用更清晰易懂的模式来实现,这样不仅方便自己理解,也让其他人更好理解,从而带来更好的协同开发。

更多的资料可以参考:

5. 开发模型

6. 多线程与并行编程

多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。为了充分发挥多核处理器的计算性能,计算机视觉、机器学习、数据处理都需要并行处理,因此需要理解并行的原理机器多线程、多进程的原理和实现。

C++
1
https://gitee.com/pi-lab/learn_programming.git
git@gitee.com:pi-lab/learn_programming.git
pi-lab
learn_programming
learn_programming
master

搜索帮助