大一C语言作业编码风格是否不规范?需要做哪些优化调整?
你当前代码存在的主要可优化问题
1. 命名不符合C语言规范且可读性差
- 所有双下划线开头的标识符(比如
__INIT__、__base_init__)以及单下划线加大写开头的标识符,是C标准保留给编译器、标准库使用的,自定义代码使用这类名称属于未定义行为,极易引发命名冲突。 - 结构体成员以下划线开头(比如
_name、_address)的写法没有必要,属于无意义的风格习惯,反而会降低可读性,直接去掉下划线使用普通名称即可。 - 全大写的结构体类型名(比如
CORPORATE、APARTMENT)不符合常规C代码风格,全大写一般仅用于宏定义,结构体类型建议使用小写加下划线的风格,比如corporate_s、apartment_s,避免和宏混淆。 - 命名过于简略模糊:
NUM宏表意不明,建议改为MAX_PROPERTY_PER_TYPE;cal_前缀的缩写不够直观,建议改为全称calculate_;__init__完全没有说明初始化的对象,建议改为property_generic_init这类表意明确的名称。
2. 类型安全隐患大
你当前用void*加枚举类型匹配转换的写法非常容易出错:如果调用时传入的枚举值和指针实际对应的结构体类型不匹配,不会有编译期报错,运行时直接出现内存访问错误,排查成本极高。
更合理的写法是:
- 先为每类房产单独编写类型明确的初始化、计算函数,比如
apartment_init、townhouse_calculate_monthly_earnings - 如果需要通用接口,再单独封装一层接收
void*和枚举的接口,对外暴露的接口优先提供类型安全的版本,降低误用概率。
3. 注释信息无效
你当前的注释(比如// CORPORATE BLUEPRINT)仅重复了代码本身已经表达的信息,没有额外价值。建议补充有实际意义的注释:
- 结构体的核心作用,比如
// 管理公司名下所有房产的总结构体 - 函数参数、返回值的含义,比如
// 计算指定类型所有房产的月收益总和,返回值单位为美元 - 特殊字段的注意事项,比如
// 公司名称,需动态分配内存,销毁时需手动释放
4. 代码可维护性不足
- 硬编码的
NUM宏绑定死了每类房产的数量,后续如果要调整数量需要修改头文件,甚至可能影响所有引用该头文件的代码,建议将该参数改为CORPORATE结构体的成员,支持动态配置。 - 头文件中仅声明了初始化、计算类函数,没有对应的资源销毁函数,你的结构体中存在
char*类型的字符串成员,没有销毁逻辑很容易出现内存泄漏。 - 枚举成员和结构体名的对应关系不够直观,比如枚举值
apartment对应结构体APARTMENT,可以统一命名风格降低匹配成本。
内容的提问来源于stack exchange,提问作者andy
相关产品推荐
相关产品推荐

