最近写了不少类了,从垃圾代码爬坑,虽然还是很垃圾,但是照葫芦画瓢,有几分神韵。在这里总结一下,写类的经验教训。
第一步 分析:
当拿到一个要求时,要先去考虑怎样一个类到底该实现什么样的功能,有什么样的数据,简而言之,就是分析。该用什么方式组织数据,达到解决一类问题的方式,在分析结束后脑子里会有一个大概的框架,在通过分析后将每个类的应该有的数据,与操作写出来,这个时候不需要写出具体实现方式,而是为后续写类,搭建一个框架,分析时也要注意面向对象封装的特点,一一定要注意数据与操作的分离,这样让每个类成为一种的独立的类型,而不是数据操作混用,每个类都不能独立的解决一些问题,这样的代码复用性差,所以还是按照老师讲的数据类与操作类清晰的分离,到这里一个比较明确的思路就可以的出来。
第二步 补充操作使类完整
这一步,包括代码的实现与调试,之前的时候写代码是一气呵成,那时候还不太明白什么是写一个功能调一个功能,指导有一次通讯录管理系统最后跑不出来,也不报错,但是就是不按自己想法出结果,于是,从头开始往另一个CPP文件里粘代码,一个函数一个函数的粘贴,这样一个函数一个函数的调试,于是300行的代码硬硬的调了快两个小时,才明白什么是写一个功能调试一个,不是写完一整个程序调试一遍,也不是写完一个类调一遍,这个功能就是对每一个要起到作用而函数,进行测试,可想而知要是1000行的代码出现了问题,不是从头开始写一个,调一个的话,要是找错误的话,跟直接从新写没有太大区别。所以写一个调试一个,看似增加了写代码的时间,实际上是减少了调试代码的时间,更重要的是降低调试代码的复杂度。
应该具备的素质
面向对象编程,要注意封装继承多态,写出更具有通用性的代码,提高代码的复用率,就是减少重复代码的出现次数,比如图书馆管理系统的管理端与用户端有着同样的查询操作,如果不采用继承的方式写,就会少写很多代码,既可以减少代码的长度,又能使类更加明了,但是一般说上来就知道那两个类可以继承,是不太现实的,一般是当第一部完成后,发现两个类的功能有大量重叠,抽出重叠部分,形成一个基类,再由两个类继承。多态是为了提高类的封装性,将一个接口通过动态的方式确定调用具体哪一项操作,应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 所以熟练的使用虚函数使提高类的封装性的方法。
我认为就是根据不同的情况调用指向不同派生类的指针而使得可以调用不同的参数,可以通过键盘上敲的值动态的确定要调用那个函数。
最后一点
作为一名程序monkey,写出的代码不只是给自己的看的,应该让别人也看懂,吃过的亏是写代码是每个成员变量是a,b,c不是上学期那么短的代码,数据少,现在数据多,所以命名一定有意义,一来是让别人看的懂,其次让自己调代码时也更加方便,然后是,写代码的时候,一定要类内声明,类外定义,写一摊,不能明确看出到底有哪些函数,有哪些功能,再根据函数、功能去找代码,这样更方便,与明了。
虽然,我们也没学什么设计模式,软件工程什么什么的,但是很多老师讲了的知识就一定要会。上学期的时候Fls不让写注释,上学期代码短,一眼就看出来了,这学期开始时不写注释,写出的代码不尽人意,因为思路突然就中断了,这是干嘛的,什么作用什么功能?所以我觉得适当的明了的注释应该是可以有的,目前水平还很低,这是自己接触的第一门语言,估计这应该是大学三年用的比较多的语言了,所以还要继续努力。

C++--浅谈开发系统的经验相关推荐

  1. [原创] 浅谈ETL系统架构如何测试?

    [原创] 浅谈ETL系统架构如何测试? 来新公司已入职3个月时间,由于公司所处于互联网基金行业,基金天然固有特点,基金业务复杂,基金数据信息众多,基金经理众多等,所以大家可想一下,基民要想赚钱真不容易 ...

  2. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路

    原文地址: http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service Manager成为Android进程间 ...

  3. 《浅谈-Android系统越用反应越慢的问题》

    <浅谈-Android系统越用反应越慢的问题> android应用程序和iphone应用程序不一样,用过iphone的都知道,点击图标进入程序后,如果还想用其他程序,必须先按返回退出然后进 ...

  4. 浅谈SpaceBuilder系统的缓存机制_缓存思想

    在前面的文章中也提及到为了提高系统的性能,SpaceBuilder在内部做了大量的工作,而数据缓存就是其中非常高效的处理方式. 我们知道SpaceBuilder采用了多层架构的处理模式,数据通过业务实 ...

  5. 浅谈 Linux 系统中的 SNMP Trap 【转】

    文章来源:浅谈 Linux 系统中的 SNMP Trap 简介 本文讲解 SNMP Trap,在介绍 Trap 概念之前,首先认识一下 SNMP 吧. 简单网络管理协议(Simple Network ...

  6. 浅谈系统性能提升的经验和方法

    浅谈系统性能提升的经验和方法 随着信息技术的快速发展,系统性能优化变得越来越重要.在现代应用程序中,高性能系统已经成为了一个非常重要的目标,因为这可以帮助提高用户体验和提高生产力.在本篇博客中,我将探 ...

  7. 浅谈秒杀系统架构设计

    秒杀是电子商务网站常见的一种营销手段. 原则 不要整个系统宕机. 即使系统故障,也不要将错误数据展示出来. 尽量保持公平公正. 实现效果 秒杀开始前,抢购按钮为活动未开始. 秒杀开始时,抢购按钮可以点 ...

  8. 东方木2020浅谈win10系统还原怎么操作

    编辑:东方木影院 地点:武汉 时间:2020年2月14日 东方木2020浅谈win10系统还原怎么操作,如果电脑物理内存不足时,会导致工作效率非常的低,我们可以调整win10 32位系统虚拟内存来加快 ...

  9. android 系统升级 方法,安卓系统怎么升级 浅谈安卓系统更新升级的几种方法

    最近有网友问小编"安卓系统怎么升级?",针对该问题,笔者也在网上查找了下相关资料,不过并没有找到什么有价值的相关介绍,多数都是介绍如何自动升级.或者下载升级版包等等方法,对于一些常 ...

最新文章

  1. 细数二十世纪最伟大的10大算法
  2. 迁移学习的挑战和六大突破点
  3. 判断输入是否为汉字的方法
  4. 计算机网络实验数据链路层分析,计算机网络第三次实验-数据链路层
  5. TCP-Traceroute 核心代码
  6. 【Pytorch】MNIST数据集的训练和测试
  7. win7查看tomcat端口_想研究Tomcat性能调优,看这篇就够了
  8. HDU2201 熊猫阿波的故事【概率】
  9. C#之Bcd码时间转成ToDateTime
  10. 算法:合并两个有序链表21. Merge Two Sorted Lists
  11. 职场领导想逼你走时,他会用哪些奇招逼你走?
  12. GUI输出中文为乱码解决方式
  13. android依赖本地工程排除,Android Gradle依赖项排除(Android Gradle dependency exclude)
  14. 电脑笑脸蓝屏问题 也许你可以尝试一下这个
  15. java开发名言_java实现收藏名言语句台词的app
  16. mysql程序选项有两种通用形式:长选项和短选项_MySQL程序概述
  17. HTML+css简单实现手机邮箱导航网页
  18. python+ opencv实现摄像头实时人脸识别并实现汉字标框
  19. Windows10如何设置定时开机
  20. Tensorflow中的多层感知器学习

热门文章

  1. ci Call to undefined function site_url()
  2. ViewController的生命周期分析和使用
  3. python怎么重命名word文件,Python读取word文本操作详解
  4. install ADT plugin
  5. 从集合中查找最值得方法——max(),min(),nlargest(),nsmallest()
  6. python之绝对导入和相对导入
  7. 运维专家:我在大数据项目中踩过的那些坑
  8. iOS开源项目周报0323
  9. Ajax初体验(一)
  10. Ubuntu16.04 php7.0+mysql5.7+apache2环境搭配