面向对象程序设计心得

面向对象程序设计心得

其实我认为一句话便可以描述出很多,那就是代码是滚雪球一步一步滚出来的,而不是应该与之相反的。

这句话让我感触很深的地方时当时做的一个搜索,因为大多复制,黏贴,所以并没有进行全部的检验,只是对其中两个典型的搜索姓名和学号进行了检查,再后来,曾经用到了返回值,发现有使对边界处理不正确,于是开始一步一步进行向上查,因为对于搜索太过于放心,所以第一次没有发现,最后才知道是因为复制名字的end,导致其他multimap的边界处理都存在异常。像这种错误其实是很难发现的。所以尽管复制黏贴也要小心。‘

还有遇到一个从来没有遇到过的问题是重定向文件输入最后总是在末尾重复输入,这个问题不知道为什么测试了所有的数据基本都没错,只是最后两个数一直重复输入,导致文件输入不能正常结束,我想出的一个解决方法是添加标识来控制文件输入,像如果读入end结束。这样这个bug就消失了。

还有一个曾经困惑很久的问题,是怎么在用户端改变管理端的数据书呢?如果按照以前的思维,是在学生端创建一个管理端,通过管理端对其进行操作。但是通过一步步学习,知道这种方法是错误的。那该怎么弄呢?如果在学生端加一个变量来存book是不是不安全的呢?

结果是可以用。因为至少在学生端有一层private保护,总比建立管理端,让用户端直接控制管理端要好得多。不过是多加一个读取和保存的功能。

灵位要分清楚类与类的界限。像是搜索书是否应该加上学生搜索,让该类更加丰富呢?答案是错误的,学生端也会继承学生查询,这显然是不安全的,即使通过private,然后再通过䍚来改变是否可以使用的某一个函数,也是极其繁琐的,所以应该在开始打类之前做好每个类的规划,几个类,类的成员,负责什么功能。不要超出类的职责使用。

还有现在的代码应该不仅仅是以前的一百行以内的情况了,所以应该是规范命名,为了多次修改读写代码,也为了方便它人读

像学生查询函数可以写成 student_search_byname

书记查询 book_search_byzhanghao这样可以提高自己代码的质量,同样变量的命名也应该使用相同的原则。

还有不要忘记大多数的重载运算符都是有返回值的。

剩下的是帮助同学遇到的错误

在map中用时间作为下表,一直报错,后来发现是因为Time类没有重载小于等于运算符导致的map不知如何排序。

经常的函数形参列表不匹配。

这些错误虽然很小但也是总是在让人出现错时摸不着头脑,所以也要小心这些错误。

虽然学完了课本,但如同老师建议所说,这本书仅仅是入门,何况还不一定掌握完全这本书的内容和原理。所以希望自己能够在假期读一读c++primer来为学习Java打好基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值