模塊化編程常規需要遵守的一些規則記錄。
原則:高內聚,低耦合。
1、每一個C文件對應一個同名的h文件。
2、函數的入口處對參數的合法性進行檢查。
3、僅在源文件中使用的函數應該加static修飾。
4、不用或少用全局變量。
5、防止局部變量和全局變量重名。
6、沒有被調用的變量要及時清除。
7、用宏定義表達式時,每個參數和表達式都要使用括號。
8、多次出現的數字應該使用宏、枚舉或const 常量替代。
9、將復雜的復合表達式拆分成若干個簡單表達式。
10、建議使用一組枚舉值代替多個相關宏定義常量。
示例:
typedef enum
{
E_WRITE_REG = 0,
E_READ_REG = 1,
E_WRITE_RAM = 2,
E_READ_RAM = 3,
E_WRITE_CURVE = 4,
E_MAX,
} E_ACT;
11、任意一個頭文件均可獨立編譯,被包含使用時不用同時包含其它頭文件。
12文件應當職責單一,盡量減少依賴頭文件。
頭文件應使用#ifndef/#define/#endif 防止被重復包含。
示例:
#ifndef _XXX_H_
#define _ __XXX_H_
…
#endif
13、模塊包含的多個.c/.h 文件應放在一個文件夾下,模塊名即為文件夾名。
不應該在.c 中通過 extern 的方式使用外部函數接口、全局變量,只能通過頭文件。頭文件是對應的.c文件對外的窗口,這一點很重要!
14、文件注釋
/*******************************************
Copyright (c) 2021 xxx Co.,Ltd. All rights reserved.
FileName : 文件名
Author : 作者
Version : 版本
Date : 日期
Note : 注釋
History : 歷史修改記錄
*******************************************/
15、函數注釋
/*******************************************
name : 函數名
description : 函數描述
Input : 輸入
Output : 輸出
Return : 返回
*******************************************/
16、頭文件注釋排列
/* Includes ----------------------------*/
/* Public define -----------------------*/
/* Public typedef -----------------------*/
/* Public constants --------------------*/
/* Public variables ---------------------*/
/* Public function prototypes --------*/
17、 C 文件注釋排列
/* Includes ----------------------------*/
/* Private define ----------------------*/
/* Private typedef ----------------------*/
/* Private constants --------------------*/
/* Private variables ---------------------*/
/* Private function prototypes ----------*/
/* Public constants ----------------------*/
/* Public variables -----------------------*/