读程--从未参与的项目中学习

  这是软件工程综合实践课程布置的第一次个人博客任务,我需要完成的是找一个未参与的项目,读程后写出自己的感受。

  首先,特别感谢我可爱的同学及好朋友分享给我她的项目,让我能够从她的程序和代码风格中学习到一些我不具备的知识和能力。

                      

  这个项目是我们大一下完成的一个项目,网上购物系统,是一个用于网上购书的一个程序,实现了购书所需的大部分功能,是我们大一下需要完成的大作业,使用的是语言是C++,她在该项目中分了三个头文件和一个源文件,将购书系统分成了订单管理,书籍管理和用户管理三部分进行实现。

  我想起自己在大一上学期完成的大作业,由于在头文件运用上出现了问题,把原本分块实现的代码又整合在了一起,看起来感觉十分的杂乱,内容太多,找不到自己想要的代码。在她的代码实现中,有较为详尽的注释,方便了他人和自己的读程,这一点是我在那个时候没有做好的一点,我也是因为自己在重新读自己写的程序和在debug的时候(尤其是debug时的痛苦),才意识到注释的重要性,而后开始给自己的读程提供便利,以便能够更快找出问题。

                      

  从使用者角度,她把程序分成了两个部分,管理员和用户。管理员的信息存储在txt文件中,在上面这张图例中可以看出,在输入密码登录之后,输入的密码,登陆成功提示和下一个界面的修饰符出现在同一行,未处理得当,不过,在密码输入时将输入的密码都用*号显示,这里做得特别好,可以保护隐私。在界面转换上,她并没有进行处理,我在我自己的程序中,使用了system("cls");清屏函数来实现页面的假跳转。

            

                    

                      

                        

                       

  她在主要功能的实现上使用了清屏函数,让界面变得更加整洁。在文件信息存储上,用txt文档分别存储了管理员信息,书籍信息,用户信息,订单信息和用户登录账号密码信息。在管理员处理图书信息的时候,也出现了一些问题,可能在测试上并没有考虑到相应的情况,我尝试输入了一个不存在的图书信息,在删除信息上,删除不存在的书籍时并未作相应的处理;在修改信息上,虽然提示了书籍不存在,却又把信息存入,也出现了错误;在查找书籍上,给出了提示,却又显示了一本图书的信息;在新增图书信息上,没有考虑到编号相同的问题。这些问题是刚开始写程序很容易出现的问题,考虑不完备,测试工作没有做全,因为我们经常是为了证明自己想要的结果,所以就按照正确的来输入,结果正确后就忽略了其他情况,在安全性能上存在很大的问题,如果是在医学,航天航空等领域,会造成不仅仅是经济损失,甚至是出现严重事故。因为当时时间比较赶,大家基本上都是实现了功能,而并没有考虑到其它的因素,我在自己的项目中,考虑过输入错误的问题,不过因为合作时出现了问题,在这方面做得并不是很好。

    

                           

  她的代码很值得学习,她在编写的代码的时候,很明确的把图书类,用户类和订单类分开,用结构体来存放管理员账号和密码。还有这一段把密码自动转换成“*”,考虑到了账户安全的问题,这是我在这个项目中做得不足的地方,是一个很不错的想法。我在编写购书系统的时候在文件存储上做得不是特别好,在存储方式和读取方式上存在着一定的困惑,当时我把每个用户的信息分别存在各自的文件里,这样的方式并不太可取。

  在她的代码中,我看到她有部分功能未实现,还有被注释掉的功能。我在编写购书系统的时候也遇到相应的问题,刚开始给出了很多功能,到后面又遇到了问题,把时间用在了debug上,由于时间有限,不得放弃一些功能,实现主要的功能,虽然最后把主要的功能实现了,却存在着很多漏洞,没有把可能出现的情况进行处理,完成得很仓促。从她未实现的功能出发,我找到了她出问题的地方,后面两张并不是因为我截取了同一段代码,而是她在处理相似问题时,把这段代码复制了一遍,是出错的原因之一,还有就是这一段代码本身也有着问题,导致功能实现上出现了问题。还有就是她的存储订单的方式和她读取订单的方式,只能读取一个人同一时间存入的订单信息,而且把错误的订单也同时录入了文档里。这些都是我们在编写代码过程中容易出现的错误,我在编写代码的时候会尽可能重复敲类似的代码,虽然可以简单的复制粘贴,但是较难的代码我会选择自己重新敲一遍,这样既可以加深印象,又可以查看代码是否出现问题。

  在看代码的时候第一感觉就是头疼,虽然她分得很详细,还有着注释,但是从一个函数中找另一个函数,不仅仅是只有那么一个,这种感觉不是很好。所以如果我在读一个什么注释也没有的大串代码,并且是一个没有参与过的项目的时候,可想而知,是很头疼的一件事,还有就是代码的分块对读程的进度也有很大的影响。

  

原文地址:https://www.cnblogs.com/BFXR/p/10468531.html

时间: 2024-07-30 11:56:54

读程--从未参与的项目中学习的相关文章

在项目中学习.NET的JQuery CheckBox方法(全选、取消全选、其他)

一.在项目中遇到的CheckBox的全选和取消全选以及其他等解决方案如下: // 对全选和取消全选的事件 $("#CheckAll").click(function () {                var checkedOfAll = $(this).prop("checked");                if (checkedOfAll == true) {                    $("input[id*='check']

在项目中学习.NET的json(一)

项目实现功能: 1.使用工具:json在线解析器.(C# Newtonsoft.Json类库源码包源代码:JObjectTests.cs-好库网) 2.前台:在文本框中输入内容,点击添加按钮后把输入内容显示table表格中(可添加多行),最后提交. 3.思路解析:首先在添加之前验证所添加的内容,添加后在验证所添加的内容之后,添加内容到table表格tr中,再次点击添加除了验证所添加的内容外,也要判断添加的内容是否和上一 个添加的内容是否一致,最后提交table表格中的内容. 4.遇到的问题和解决

在项目中学习.NET的json(二)之运费计算器

项目实现功能: 1.前台:默认长.宽.高.重量都为0,汇率(美元兑换人民币)为¥6.35,默认都为0的情况下,table表格中各线路的费用:当修改长.宽.高.重量点击计算后,table表格中各线路费用进行变化. 2.思路解析:在前台js中,先写一个方法,当点击计算前后所显示的内容,把所填内容通过GET请求传递到另一个页面中进行计算后,在把所需要的对象返回到当前页面进行循环修改. 3.遇到问题和解决方案: 第一.原先的思路是:默认情况下长.宽.高.重量都为空,当点击计算后显示汇率(美元兑换人民币)

在项目中学习.NET的JQuery attr方法

$('#checkbox').attr('checked'); 返回的是checked或者是undefined,不是原来的true和false了,有关此问题的解决方法如下: 只要把 attr 改成 prop 就好了   分析其中的原因,可以这样理解:它将“属性”与“特性”做了区别,属性指的是“name,id”等等, 特性指的是“selectedIndex, tagName, nodeName”等等. JQ1.6之后,可以通过attr方法去获得属性,通过prop方法去获得特性

轨迹系列——记某真实项目中轨迹存储改造方案

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.    方案目标 该方案需要满足以下几点: 支持人员当天轨迹快速获取(查询). 支持轨迹高并发读.写(实际项目中轨迹高并发读情况很少). 保证所有(历史)轨迹数据的完整性.不丢失. 2.方案探讨详细描述 2.1支持轨迹快速查询--轨迹日志文件方案 海量数据高效存储.查询,这个场景本身是比较适合NoSQL数据库运用的,但是考虑到该方案实施的难度(对工程实施.维护.研发

任正非:向谷歌学习,杀出一条血路(谷歌军团的编制不大,战斗力极强。任何产品都是架构第一。算法团队直接杀入到项目中去,一线既有算法又有数据,就容易突破,抽象的平台一定要有实践东西检验。蓝军不一定是有学历的。我们帮助他们在工作中完成学历教育)

IT之家1月22日消息 日前,华为心声社区公布了任正非在1月9日在杭州研究所业务汇报会上的讲话.在本次讲话中,任正非表示在软件工程能力提升上,我们最缺乏的是对宏观架构有清醒认识的人才.建立公司是一个架构:建立公司的利益体系也是一个架构:任何产品都是架构第一:软件重构一定要从宏观架构入手. 任正非强调,没有谁在限制我们的科研,我们也不要自己约束了自己,要敢于到贴近人才资源的地方进行研究活动,在每个研究所形成自己的技术要素,对行业发展形成牵引.要多和终端.外研所交流. 最后任正非表示,谷歌军团的编制

webpack前端构建工具学习总结(四)之自动化生成项目中的html页面

接续上文:webpack前端构建工具学习总结(三)之webpack.config.js配置文件 1.安装html-webpack-plugin插件,输入命令:npm install html-webpack-plugin --save-dev 2.在webpack.config.js文件中,引入html-webpack-plugin插件 3.输入命令:npm run webpack,编译打包 可以看到在dist/js目录下新生成了一个index.html文件,并且引入了新编译生成的两个js,但此

Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这部分内容需要以下Jar包支持 mysql-connector:MySQL数据库连接驱动,架起服务端与数据库沟通的桥梁: MyBatis:一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架: log4j:Apache的开源项目,一个功能强大的日志组件,提供方便的日志记录: 修改后的pom.xm

Android的学习之路(二)项目中原生文件的使用场景和文件介绍

1.src文件:java源代码存放目录 2.gen 文件:自动生成所有由android开发工具自动生成的文件,目录中最重要的就是R.java文件,这个文件由android开 发工具自动产生的.android开发工具会自动根据你存放res目录的资源,同步更新修稿R.java文件,正因为 R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java.R.java文件在应用中起到了字典的作 用,它包含了各种资源的ID,通过R.java,应用可以很方便的找到对应资源, 2.1R.java