如何在Keil中提高代码的可读性

写代码犹如挖坑,挖坑容易,填坑难。一旦代码遇到BUG,需要慢慢调试时,你就会发现代码的可读性非常重要了,代码不整齐、命名不规范等等问题会导致代码像一团屎,看着恶心,检查起来更是悲伤。

所以,写代码前,最好先把代码的整体结构布置好,比如include放什么地方,define放什么地方,需要export的变量、函数放什么地方,最好又要保持自己所有的代码都保持这种模式,这时候,创建一个代码模板就非常有效了。

创建一个代码模板需要注意哪些方面呢?没有什么好的想法的话可以参考一下优秀的开源代码。

上面的代码风格从左到右,分别是FreeRTOS、FatFs、ST的代码风格,都很优秀,而且这些优秀的代码的共同点是,注释跟代码量差不多,甚至超过代码量。

因为的本身也在使用Keil,而且ST的注释很有逻辑,就选择了ST的注释风格。选择了注释风格后,就是创建代码模板了。

创建代码模板步骤如下

  • 下载HAL库,并解压,打开Cube_FW_F7_V1.11.07533(也可以是其他文件夹下的),删除所有的代码,只留下注释
  • 在自己的工程中新建一个文件,复制到新建的文件中
  • 打开工具栏的Configuration,选择TextCompletion
  • 新建一个Template,将模板复制进去
  • 重复以上步骤,创建头文件的代码模板

使用代码模板方法

  • 新建一个文件,要包含在项目中
  • 在左侧的工具栏选择Templates
  • 点击先前创建的代码模板

最后附上我创建的代码模板

头文件的代码模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef
#define
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
/** @addtogroup BSP
* @{
*/
/** @addtogroup Components
* @{
*/

/** @addtogroup ST7735
* @{
*/
/** @defgroup ST7735_Exported_Types
* @{
*/

/**
* @}
*/
/** @defgroup ST7735_Exported_Constants
* @{
*/

/**
* @}
*/
/** @defgroup ADAFRUIT_SPI_LCD_Exported_Functions
* @{
*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* */
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/************************ (C) COPYRIGHT greedyhao *****END OF FILE****/

源文件的代码模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/* Includes ------------------------------------------------------------------*/
/** @addtogroup BSP
* @{
*/
/** @addtogroup Components
* @{
*/
/** @addtogroup ST7735
* @brief This file provides a set of functions needed to drive the
* ST7735 LCD.
* @{
*/
/** @defgroup ST7735_Private_TypesDefinitions
* @{
*/
/**
* @}
*/
/** @defgroup ST7735_Private_Defines
* @{
*/
/**
* @}
*/
/** @defgroup ST7735_Private_Macros
* @{
*/
/**
* @}
*/
/** @defgroup ST7735_Private_Variables
* @{
*/
/**
* @}
*/
/** @defgroup ST7735_Private_FunctionPrototypes
* @{
*/
/**
* @}
*/
/** @defgroup ST7735_Private_Functions
* @{
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/************************ (C) COPYRIGHT greedyhao *****END OF FILE****/