一次代码重构记录

经过一个学期的学习。陆续实现了各种结构。近日查看这些实现代码发现由于当时水平有限,代码中不安全处很多、于是决定重构代码,

第一步。尽量使用const修饰符,以防数据被意外修改。

1。const 函数形参。
?? 形如将 void fun (?char* )改为 void fun ( const chat* )
?? 使得函数能接受无左值实参。如函数实参,表达实参等等
2。const 返回值,
???? 形如将 bool?fun ( void )?改为 const bool fun?( void )?
?????进一步保证函数值安全返回,
???? 但是有一个麻烦。当返回值为指针时候,在调用端出现类型不匹配的问题?: 比如:
?? const int?*?fun ( void );
?? int *p = fun();//必出错,
? 解决方案有二。
?? 1,如确定无须再让p指向别处。则可把p改为const?指针
???? ?const int* p =?fun();
?? 2.利用强制类型转换:
????? ?int?*p = ( int* ) fun ();
??? ??缺点:语法难看。但有时候必须,如p是某个类的成员。则一般不可用const修饰,
3。const 成员函数
?? 形如?int fun ()?改为 int fun () const?
???注意:修改时候必须确保该函数不改变任何类成员,

第二步:每个类补充构造函数,和运算符集,

考虑1,使得可以支持泛型容器,如vector要求必有拷贝构造函数,
考虑2。提供接口多样化,可防止一些不必要的类型转换。如:cstring和string之间,
麻烦,有些结构要求递归。如二叉树,拷贝构造难以实现。
解决: 另定义copy函数。源代码见源码分类中的【头文件】c++实现二叉树、

第三步,类型参数化,使用模板

考虑,想支持泛型算法,
困难,尚未实现。等待下次重构,??????????????????

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值