2010-04-25 68 views
2

我經常使用WinApi處理私人項目,並且您可能知道,它有成千上萬的命名和typedefed結構體,如MEMORY_BASIC_INFORMATION。如何命名爲結構體的變量

在我的問題中,我會堅持這一點,當你想命名這種類型的變量時,仍然是首選,或者更好。這種情況是否有某種風格指南?

例如,如果我需要VirtualQueryEx函數的變量。

一些想法:

MEMORY_BASIC_INFORMATION memoryBasicInformation; 
MEMORY_BASIC_INFORMATION memory_basic_information; 

只需使用結構非大寫的名字,帶或不帶下劃線。

MEMORY_BASIC_INFORMATION basicInformation; 
MEMORY_BASIC_INFORMATION information; 

縮寫嗎?

MEMORY_BASIC_INFORMATION mbi; 

我經常看到這種風格,使用結構名稱的縮寫。

MEMORY_BASIC_INFORMATION buffer; 

VirtualQueryEx定義了第三個參數lpBuffer(其中傳遞的指針結構),所以使用該名稱可能是一個想法,太。

乾杯

+0

我經常使用這個相同的查詢,並且每次都發現我自己做了不同的事情。期待看到這種方式 – Fuzz 2010-04-25 12:05:00

回答

2

一般來說,不建議根據變量的類型命名變量。相反,嘗試提供有關特定背景和使用目的的其他信息。

使用MEMORY_BASIC_INFORMATION示例,考慮結構的上下文是什麼。您是否正在使用這些信息遍歷多個這樣的信息結構?那麼也許

MEMORY_BASIC_INFORMATION currentFrame; 

或者,如果你正在對某些狀態的內存信息進行測試,也許它是一個候選人。

MEMORY_BASIC_INFORMATION candidate; 

現在您可以編寫像「測試候選結構...」的文檔。

您可能會發現您仍然希望使用類型前綴位置包含類型信息。如果是這種情況,您可以將其稱爲mbiCurrentFramembiCandidate

如果目的或上下文是真正抽象的,比如API函數本身就是這種情況,我會選擇一些簡單而直接的內容,例如infobuffer,除非這些名稱可能在某種程度上被錯誤解釋上下文。

0

我認爲這取決於一些問題,你不得不追求可讀性,當找到了最佳的平衡。

  1. 窗口寬度
  2. 變量/類型在程序中使用類似名稱的。

話雖這麼說,如果我能擺脫它,我可能會使用...

MEMORY_BASIC_INFORMATION info; 

如果有其他類似的類型或變量名都,那麼我想補充某種描述改性劑,如...

MEMORY_BASIC_INFORMATION memBasicInfo; 

或者,如果窗口房地產有限(一些項目我已經在80字符線最大都堅持工作),我可以去...

MEMORY_BASIC_INFORMATION mbi; 

但是爲了讓它儘可能可讀,我儘量保持一致 - 並且我認爲是最重要的事情之一。

有點到處都是,但我希望它有幫助。

0

嘗試並保留typedef的大小寫和首字母縮寫,例如

MEMORY_BASIC_INFORMATION MBI_temp 

我處理了許多代碼,並且必須在Linux和Windows中保持可移植性,這對我們來說也是一個問題。

你也可以做到這一點在駝峯:

MEMORY_BASIC_INFORMATION MBITemp 

..但似乎不是爲自我解釋沒有。

重點是,任何熟悉這些結構應該承認他們是他們相當快。只要確保不要在另一個命名空間中亂動。

關鍵是,只要在你工作的每棵樹上都一致。它真的只有一個顯着的問題,有兩種情況:

  1. 全局
  2. 英里長的功能

如果你有這麼長時間,你必須向上滾動五頁的聲明功能只是爲了看看一個變量是,有更大的問題來處理比變量術語:)

惱人的是,這可能會引入一些古怪,因爲語法高亮選擇它作爲常量,但這也是基礎typedef的情況。

+0

抱歉,但對我來說這真的很醜。 – evilpie 2010-04-25 13:18:54

+0

@evilpie - 它不是我最喜歡的,但既不是我喜歡的結構和類型:)它只是我們想出來幫助使'混合'代碼更具可讀性的最好的東西。 – 2010-04-25 13:49:24