星期四, 1月 22, 2015

用C語言實作物件導向(一)

寫Embedded的人最常碰到的就是C語言了,
在這邊整理一下幾個最初級也最基本的概念。

1. 以file為一物件,變數、函數分成私用(static)與公用。
 儘量避免使用全域變數。
 在令變數時就應決定作用範圍,愈小愈好。
 外部物件要對私有變數賦值,寧可多寫一個function。
 只對外露出function而不露出變數這很重要。
 
2. 同類的變數使用struct集合在一起。
 如此一來要re-use也很方便。
 
3. 以物件為出發點去思考函數的寫法,而不是以方法為出發點。
 例如在中斷處理的檔案中(ex. IRQ.c),
 直接在裡面做事情並呼叫許多各物件的方法是不妥的。

 不好的寫法:
 // IRQ.c
 void A_IRQ(void){
  obj1xxx();
  obj1yyy();
  obj1zzz();  
 }

 好的寫法:
 // IRQ.c
 void A_IRQ(void){
  obj1IRQ();
 }

 // obj1.c
 void obj1IRQ(void){
  obj1xxx();
  obj1yyy();
  obj1zzz();
 }

 Initial的時候也是

 不好的寫法
 // RCC.c
 void RCC_Conf (void){
  obj1RCC_Conf();
  obj2RCC_Conf();
 }
 // NVIC.c
 void NVIC_Conf (void){
  obj1NVIC_Conf();
  obj2NVIC_Conf();
 }

 好的寫法
 // Obj1.c
 void Obj1_Init (void){
  obj1RCC_Conf();
  obj1NVIC_Conf();
 }

 // Obj2.c
 void Obj2_Init (void){
  obj2RCC_Conf();
  obj2NVIC_Conf();
 }


沒有留言: