2019年5月16日 星期四

在 C 語言怎樣做物件導向



之前有機會看一個 open source 的 C 程式碼,看完了才發現居然是 C 語言。還以為是用 C++ 寫的。

https://github.com/gpac/gpac/blob/master/src/compositor/mpeg4_audio.c






仔細觀察後發現,它有幾個規律。
  • 同一個模組的每個函數名稱都有相同字首。
  • 都有 handler 參數
  • 沒有全域變數
  • header file 只有宣告 data structure,沒有 data structure 的內容。
雖然不能繼承,但是資料封裝(information hiding)很完整。資料封裝完整的好處是,內部修改可以不影響其它檔案。可以用從 makefile 裡簡單的換掉實作。修改程式碼或新增內部變數也很容易,要重新測試的區域很少。

把這個方式學起來應該不錯。某些只能用 C 的時候還是可以把程式寫得很漂亮。

沒有留言:

張貼留言