[問題] 各位都怎麼命名struct的type與identifer?

作者: unknown (ya)   2019-02-20 14:52:09
範例:
typedef struct
{
unsigned long LTH; //header description
unsigned long VER; //header description
char Name[FUNCTION_NAME_LTH]; //header description
}Flash; //為什麼這些members的型別是Flash,而不是Header?
typedef struct
{
Flash Header; //型別為Flash的Header
unsigned long CRC32;
}Component;
Component* DSP = malloc(sizeof(Component));
DSP.Header.VER = 2 //DSP(元件型別)的標頭檔(Flash型別)的版本號(數字型別)為2
^^^^^^^^^^^^^^^^^^
非常符合邏輯
上述的命名方式有一個地方讓我覺得很奇怪,為什麼標頭檔的型別為Flash,而不是Header
?。
因為Flash不應該是一個型別阿...Header才是一個型別吧?
作者: Neisseria (Neisseria)   2019-02-20 15:01:00
所以樓主想問什麼?
作者: loveme00835 (髮箍)   2019-02-20 15:29:00
「型別」定義內容以及行為等 「名稱」賦予意義,你可以把不同的資料放在最前面來當作標頭,因此把 Header 的型別換成 int 也是合理的,不過這個抽象化要做足才會比較好抽換,不然只會得到超多編譯錯誤
作者: suwako   2019-02-20 17:21:00
舉個例子:int a; 宣告一個名稱為a的變數,其型別為int 這樣你有了解了嗎?
作者: MOONRAKER (㊣牛鶴鰻毛人)   2019-02-20 18:04:00
生一個小孩,取名叫小孩?
作者: chuegou (chuegou)   2019-02-20 20:01:00
如果有兩顆一樣的flash 你要怎麼定義型別和宣告變數這樣想就知道差異了
作者: Bencrie   2019-02-20 21:11:00
第一個範例叫把一個匿名 struct 定義為 Flash 的型別
作者: TWkobe (中華柯比)   2019-02-20 21:52:00
出發點差異 他是以flash 當主體
作者: james732 (好人超)   2019-02-21 00:26:00
話說有時候我覺得命名比寫程式還困難…
作者: MOONRAKER (㊣牛鶴鰻毛人)   2019-02-21 11:31:00
應該是把programming當國文來唸。
作者: Neisseria (Neisseria)   2019-02-21 11:37:00
變數要用 domain knowledge 來命名
作者: pericles (吼~)   2019-02-22 21:20:00
是不是少看了 typedef 才產生誤解?因為 typedef 的關係,Flash 是該匿名 struct 的別名Header 為別名 Flash 型別的 struct object

Links booklink

Contact Us: admin [ a t ] ucptt.com