代码阅读心得

    面向对象方法对于设计大型应用程序来说是一个不错的方法.但是面向对象也不是每个人写的类都能看懂.
    最近一直在看一个开源的代码,用的是C++,有很多类,但是它实在太难懂了.原因是它虽然也都用了面向对象的思想和方法,但是在类的内部,代码是很乱的.面向对象不仅仅指的是类之间的协作,还有一个大类内部各个事物之间的协作.一个类有公共接口,它是与外部协作的.但是类中还可以有保护的方法,私有的方法,它们主要是类内部协作的,或者基类和子类进行协作的.
    对于类内部的设计,有两种极端的方案:一是只把需要与外部协作的类根据需要决定方法需要的参数,而对于私有的和保护的方法,完全取消参数,而用类的成员变量代替.我看的代码就是这种设计.当类小的时候可读性还行,但是当一个类变的很大时,这种设计就变的非常难懂.我看的代码中有一个类,有30多个方法,每个方法大概有200行代码,还有20多个成员变量.类的方法基本上都不带参数,完全用成员变量来实现传递.可以想象在阅读这样的代码时难度有多大.二是把私有的和保护的方法尽量设计成带参数的方法,而不要使用任何成员变量.这样的话就会出现控制流和数据流基本一致的现象,这样的程序一旦掌握了它的控制流,就很容易理解了.但是却弱化了类的成员变量的功能.
    我觉得一个折中的方法是尽量把类的功能分的清晰,所有的对成员变量的修改操作全部由公共方法实现.而私有的和保护的方法不可以对成员变量赋值.如果确实需要对其赋值,则应该由公共方法给它传一个地址,也就是由参数传递.让它对参数赋值,这样的话在阅读代码时只要抓住了公共方法或者跟踪公共方法,就能知道这个类内部的数据流.并且在升级到多线程时还比较容易实现"线程安全".但是对于一个初始化需要大量工作的类,可以使用一个名称很直观的私有或者保护方法实现必要的初始化.如:Initialize()等等.
    还有一点是继承的可读性.如果一个子类的一个方法什么也没做,那就尽量不要把它再写出来.也就是尽量避免出现这样的代码:
class A:public B{
void doSomething(){ B::doSomething();}
};
个人觉得这样的代码如果声明和定义要是在一起的时候还行,但是把如果分开后对于阅读代码来说还是会增加难度的,至少会多浪费些时间.
   
    曾经以为自己写代码能力很强,认为自己写的程序很规范,现在才知道我并没有让别人看过我的大代码. 真正看了别人的代码,才知道真正的编程高手是看代码的高手,真正的高手也是能写出弱手能看懂的大代码的人.
    以上是我看了一个130000行代码的程序后的感悟.希望能对以后有点用.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值