C++--浅谈开发系统的经验
最近写了不少类了,从垃圾代码爬坑,虽然还是很垃圾,但是照葫芦画瓢,有几分神韵。在这里总结一下,写类的经验教训。
第一步 分析:
当拿到一个要求时,要先去考虑怎样一个类到底该实现什么样的功能,有什么样的数据,简而言之,就是分析。该用什么方式组织数据,达到解决一类问题的方式,在分析结束后脑子里会有一个大概的框架,在通过分析后将每个类的应该有的数据,与操作写出来,这个时候不需要写出具体实现方式,而是为后续写类,搭建一个框架,分析时也要注意面向对象封装的特点,一一定要注意数据与操作的分离,这样让每个类成为一种的独立的类型,而不是数据操作混用,每个类都不能独立的解决一些问题,这样的代码复用性差,所以还是按照老师讲的数据类与操作类清晰的分离,到这里一个比较明确的思路就可以的出来。
第二步 补充操作使类完整
这一步,包括代码的实现与调试,之前的时候写代码是一气呵成,那时候还不太明白什么是写一个功能调一个功能,指导有一次通讯录管理系统最后跑不出来,也不报错,但是就是不按自己想法出结果,于是,从头开始往另一个CPP文件里粘代码,一个函数一个函数的粘贴,这样一个函数一个函数的调试,于是300行的代码硬硬的调了快两个小时,才明白什么是写一个功能调试一个,不是写完一整个程序调试一遍,也不是写完一个类调一遍,这个功能就是对每一个要起到作用而函数,进行测试,可想而知要是1000行的代码出现了问题,不是从头开始写一个,调一个的话,要是找错误的话,跟直接从新写没有太大区别。所以写一个调试一个,看似增加了写代码的时间,实际上是减少了调试代码的时间,更重要的是降低调试代码的复杂度。
应该具备的素质
面向对象编程,要注意封装继承多态,写出更具有通用性的代码,提高代码的复用率,就是减少重复代码的出现次数,比如图书馆管理系统的管理端与用户端有着同样的查询操作,如果不采用继承的方式写,就会少写很多代码,既可以减少代码的长度,又能使类更加明了,但是一般说上来就知道那两个类可以继承,是不太现实的,一般是当第一部完成后,发现两个类的功能有大量重叠,抽出重叠部分,形成一个基类,再由两个类继承。多态是为了提高类的封装性,将一个接口通过动态的方式确定调用具体哪一项操作,应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 所以熟练的使用虚函数使提高类的封装性的方法。
我认为就是根据不同的情况调用指向不同派生类的指针而使得可以调用不同的参数,可以通过键盘上敲的值动态的确定要调用那个函数。
最后一点
作为一名程序monkey,写出的代码不只是给自己的看的,应该让别人也看懂,吃过的亏是写代码是每个成员变量是a,b,c不是上学期那么短的代码,数据少,现在数据多,所以命名一定有意义,一来是让别人看的懂,其次让自己调代码时也更加方便,然后是,写代码的时候,一定要类内声明,类外定义,写一摊,不能明确看出到底有哪些函数,有哪些功能,再根据函数、功能去找代码,这样更方便,与明了。
虽然,我们也没学什么设计模式,软件工程什么什么的,但是很多老师讲了的知识就一定要会。上学期的时候Fls不让写注释,上学期代码短,一眼就看出来了,这学期开始时不写注释,写出的代码不尽人意,因为思路突然就中断了,这是干嘛的,什么作用什么功能?所以我觉得适当的明了的注释应该是可以有的,目前水平还很低,这是自己接触的第一门语言,估计这应该是大学三年用的比较多的语言了,所以还要继续努力。
C++--浅谈开发系统的经验的更多相关文章
- [原创] 浅谈ETL系统架构如何测试?
[原创] 浅谈ETL系统架构如何测试? 来新公司已入职3个月时间,由于公司所处于互联网基金行业,基金天然固有特点,基金业务复杂,基金数据信息众多,基金经理众多等,所以大家可想一下,基民要想赚钱真不容易 ...
- 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service ...
- 浅谈Android系统开发中LOG的使用
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用 ...
- 浅谈Android系统开发中LOG的使用【转】
本文转载自:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以 ...
- 浅谈Android系统移植、Linux设备驱动
一.Android系统架构 第一层:Linux内核 包括驱动程序,管理内存.进程.电源等资源的程序 第二层:C/C++代码库 包括Linux的.so文件以及嵌入到APK程序中的NDK代码 第三层:An ...
- 浅谈Android系统的图标设计规范
http://homepage.yesky.com/89/11620089.shtml 目前移动平台的竞争日益激烈,友好的用户界面可以帮助提高用户体验满意度,图标Icon是用户界面中一个重要的组成部分 ...
- 浅谈MES系统SMT的JIT功能(一):JIT原理
前段时间帮忙客户实现了MES系统的SMT线上的JIT功能(JIT功能只适合电子行业的生产线),今天就来谈谈JIT功能是什么,为什么工厂车间需要用到JIT等等一些经验 首先说说JIT: 准时制生产方式( ...
- 浅谈OA系统与Portal门户的区别
随着社会信息化的发展与进步,OA办公自动化软件打破了传统复杂的办公方式,使各个行业实现了高效的无纸化办公.由此一来OA快速成长为继财务软件.ERP软件之后的第三大管理软件.随着企业信息化系统的不断增多 ...
- 老司机浅谈linux系统学习技巧
Linux起源于20世纪70年代,是一种优秀的操作系统系统.初次接触到linux这个系统是在大学期间,这样才发现除了windows外的另外一个有趣系统.开始抱着好奇的心态去了解,随着深入学习,笔者被它 ...
随机推荐
- Ceph学习笔记(3)- Monitor
Ceph学习笔记(3)- Monitor 前言: Ceph将cluster map与placement rule合并为一张表称为crush map,作为集群表的一部分.由Monitor对集群表的副 ...
- Java字符串的应用
字符串的简单应用 public class join { public static void main (String args[]){ String s1 = new String (" ...
- es搜索排序不正确
沿用该文章里的数据https://www.cnblogs.com/MRLL/p/12691763.html 查询时发现,一模一样的name,但是相关度不一样 GET /z_test/doc/_sear ...
- Jmeter使用Websocket插件测试SingalR,外加还有阿里云PTS的Jmeter原生测试爬坑日志。
题外话:距离我的上一篇博客已经过去7年多了,我实在是个不务正业的程序员,遇到测试方面的东西总想分享一下,因为可用的资料实在太少了(包括国外的资料). 本人不喜欢授人以鱼,所以不会直接给出问题和解决方案 ...
- python3(一)
print('test', '怎么自动建了这么多目录', 'aaaaaaa') #test 怎么自动建了这么多目录 aaaaaaa 注释# # ---------------------------- ...
- Jquery+php鼠标滚动到页面底部自动加载更多内容,使用分页
1.index.php <style type="text/css"> #container{margin:10px auto;width: 660px; border ...
- Julia基础语法复数和分数
1.复数 2.分数
- 把川普射上太阳—如何用python制作小游戏
1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装. Windows环境下打开Cmd(开始—运行—CMD),苹果系统 ...
- D - Complete Tripartite
三分图染色 链接:https://codeforces.com/contest/1228/problem/D 三分图染色步骤:First 首先找一个点1作为集合A中的点,再找到与1相连的一个点设为2, ...
- 推荐一个小而美的Python代码格式化工具
代码可读性是评判代码质量的标准之一,有一个衡量代码质量的标准是 Martin 提出的 “WFT” 定律,即每分钟爆出 “WTF” 的次数.你在读别人代码或者做 Code Review 的时候有没有 “ ...