首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

很好的编程习惯 (五)变量与结构(2)

2013-01-27 
良好的编程习惯 (五)变量与结构(2)15-6 :严禁使用未经初始化的变量作为右。 说明:特别是在C/C 中引用未经赋

良好的编程习惯 (五)变量与结构(2)

15-6 :严禁使用未经初始化的变量作为右值。 
说明:特别是在C/C++ 中引用未经赋值的指针,经常会引起系统崩溃。  


?5-1:构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的公共变量,
防止多个不同模块或函数都可以修改、创建同一公共变量的现象。 

说明:降低公共变量耦合度。 


?5-2:使用严格形式定义的、可移植的数据类型,尽量不要使用与具体硬件或软件环境关系密
切的变量。 
说明:使用标准的数据类型,有利于程序的移植。 
示例:如下例子(在DOS 下BC3.1 环境中),在移植时可能产生问题。 
void main() 

    register int index; //  寄存器变量 
 
    _AX = 0x4000; // _AX 是BC3.1 提供的寄存器“伪变量” 
    ... // program code 


?5-3:结构的功能要单一,是针对一种事务的抽象。 
说明:设计结构时应力争使结构代表一种现实事务的抽象,而不是同时代表多种。结构中
的各元素应代表同一事务的不同侧面,而不应把描述没有关系或关系很弱的不同事务的元
素放到同一结构中。 
示例:如下结构不太清晰、合理。 
typedef struct STUDENT_STRU 

    unsigned char name[8]; /* student's name */ 
    unsigned char age;     /* student's age */ 
    unsigned char sex;     /* student's sex, as follows */ 
                           /* 0 - FEMALE; 1 - MALE */ 
    unsigned char  
           teacher_name[8]; /* the student teacher's name */ 
    unisgned char  
           teacher_sex;     /* his teacher sex */ 
} STUDENT; 

 
若改为如下,可能更合理些。 

 
typedef struct TEACHER_STRU 

    unsigned char name[8]; /* teacher name */ 
    unisgned char sex;     /* teacher sex, as follows */ 
                           /* 0 - FEMALE; 1 - MALE */ 
} TEACHER; 
 
typedef struct STUDENT_STRU 

    unsigned char name[8];     /* student's name */ 
    unsigned char age;         /* student's age */ 
    unsigned char sex;         /* student's sex, as follows */ 
                               /* 0 - FEMALE; 1 - MALE */ 
    unsigned int  teacher_ind; /* his teacher index */ 
} STUDENT; 


?5-4:不要设计面面俱到、非常灵活的数据结构。 
说明:面面俱到、灵活的数据结构反而容易引起误解和操作困难。 


?5-5:不同结构间的关系不要过于复杂。 
说明:若两个结构间关系较复杂、密切,那么应合为一个结构。 
示例:如下两个结构的构造不合理。 
typedef struct PERSON_ONE_STRU 

    unsigned char name[8]; 
    unsigned char addr[40]; 
    unsigned char sex; 
    unsigned char city[15]; 
} PERSON_ONE; 
 
typedef struct PERSON_TWO_STRU 

    unsigned char name[8]; 
    unsigned char age; 
    unsigned char tel; 
} PERSON_TWO; 

 
由于两个结构都是描述同一事物的,那么不如合成一个结构。 
typedef struct PERSON_STRU 

    unsigned char name[8]; 
    unsigned char age; 
    unsigned char sex; 
    unsigned char addr[40]; 
    unsigned char city[15]; 
    unsigned char tel; 
} PERSON; 


?5-6:结构中元素的个数应适中。若结构中元素个数过多可考虑依据某种原则把元素组成不同
的子结构,以减少原结构中元素的个数。 
说明:增加结构的可理解性、可操作性和可维护性。 
示例:假如认为如上的_PERSON结构元素过多,那么可如下对之划分。 
typedef struct PERSON_BASE_INFO_STRU 

    unsigned char name[8]; 
    unsigned char age; 
    unsigned char sex; 
} PERSON_BASE_INFO; 
 
typedef struct PERSON_ADDRESS_STRU 

    unsigned char addr[40]; 
    unsigned char city[15]; 

    unsigned char tel; 
} PERSON_ADDRESS; 
 
typedef struct PERSON_STRU 

    PERSON_BASE_INFO person_base; 
    PERSON_ADDRESS person_addr; 
} PERSON; 


热点排行