½5-7 :仔細設計結構中元素的布局與排列順序,使結構容易理解、節省占用空間,并減少引起誤用現象
說明:合理排列結構中元素順序,可節省空間并增加可理解性。
示例:如下結構中的位域排列,將占較大空間,可讀性也稍差。
typedef struct EXAMPLE_STRU
{
unsigned int valid: 1;
PERSON person;
unsigned int set_flg: 1;
} EXAMPLE;
若改成如下形式,不僅可節省1字節空間,可讀性也變好了。
typedef struct EXAMPLE_STRU
{
unsigned int valid: 1;
unsigned int set_flg: 1;
PERSON person ;
} EXAMPLE;
½5-8 :結構的設計要盡量考慮向前兼容和以后的版本升級,并為某些未來可能的應用保留余地(如預留一些空間等)
說明:軟件向前兼容的特性,是軟件產品是否成功的重要標志之一。如果要想使產品具有較好的前向兼容,那么在產品設計之初就應為以后版本升級保留一定余地,并且在產品升級時必須考慮前一版本的各種特性。
½5-9 :留心具體語言及編譯器處理不同數據類型的原則及有關細節
說明:如在C語言中,static局部變量將在內存“數據區”中生成,而非static局部變量將在“堆!敝猩。這些細節對程序質量的保證非常重要。
½5-10 :編程時,要注意數據類型的強制轉換
說明:當進行數據類型強制轉換時,其數據的意義、轉換后的取值等都有可能發生變化,而這些細節若考慮不周,就很有可能留下隱患。
½5-11 :對編譯系統默認的數據類型轉換,也要有充分的認識
示例:如下賦值,多數編譯器不產生告警,但值的含義還是稍有變化。
char chr;
unsigned short int exam;
chr = -1;
exam = chr; // 編譯器不產生告警,此時exam為0xFFFF。
½5-12 :盡量減少沒有必要的數據類型默認轉換與強制轉換
½5-13 :合理地設計數據并使用自定義數據類型,避免數據間進行不必要的類型轉換
½5-14 :對自定義數據類型進行恰當命名,使它成為自描述性的,以提高代碼可讀性。注意其命名方式在同一產品中的統一
說明:使用自定義類型,可以彌補編程語言提供類型少、信息量不足的缺點,并能使程序清晰、簡潔。
示例:可參考如下方式聲明自定義數據類型。
下面的聲明可使數據類型的使用簡潔、明了。
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned int DWORD;
下面的聲明可使數據類型具有更豐富的含義。
typedef float DISTANCE;
typedef float SCORE;
½5-15 :當聲明用于分布式環境或不同CPU 間通信環境的數據結構時,必須考慮機器的字節順序、使用的位域及字節對齊等問題
說明:比如Intel CPU與68360 CPU,在處理位域及整數時,其在內存存放的“順序”正好相反。
示例:假如有如下短整數及結構。
unsigned short int exam;
typedef struct EXAM_BIT_STRU
{ /* Intel 68360 */
unsigned int A1: 1; /* bit 0 7 */
unsigned int A2: 1; /* bit 1 6 */
unsigned int A3: 1; /* bit 2 5 */
} EXAM_BIT;
如下是Intel CPU生成短整數及位域的方式。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/