.NET重构(九):机房重构验收总结
导读:机房收费系统个人重构版,在寒假前,已经结束了。嗯,这一路的过程,也挺心酸的。结合师傅验收时的指导、建议,对这一段时间的学习,进行一个总结。
一、学习过程
这一阶段的学习,按照师傅给的建议是:由浅入深,逐步深入。所以,学习起来的困难没有太大。开始师傅是让好好领悟三层,跟我说把三层真正弄懂了,后面就比较顺利。所以,在三层的学习中,大概是花了半个月左右。学完三层,师傅就让先用三层敲通登录、添加 / 删除 / 查询 / 修改用户这五条线。可能也是之前的三层学的还算扎实,这五条线的完成都是比较顺利的,大概就是3天的样子。学习完了这个,就开始了7层的机房重构,机房重构是从12月23号正式拉开序幕的。在敲代码之前,画了包图、类图、部分时序图。让师傅给指导的时候,有很大的不足,那时候也实在是修改不出什么了。就开始敲代码了。正式验收结束是在2月12号,一共是经历了52天。中途由于准备期末考试耽搁了半个月左右,所以总结说来,机房的实际用时是在40天之内。
二、学习安排
机房重构的学习安排是秉承师傅建议的:由浅入深、循序渐进。就是先做简单的,再逐个攻破。先做完了一遍,实现功能之后。马上入手完善之前画的图,敲完代码后,发现之前画的图有很多不足的地方,尤其是时序图,问题很大。在图画完了之后,再去对系统进行了一下完善性的修改。期间也有被困难压住退缩的时候,感谢师傅的指导和帮助。
三、学习中的问题
1,设计模式用的不多,也反应出来再设计模式的学习中,不够扎实。
机房重构用到了:单例、模板、外观、抽象工厂4个设计模式。当时在计算消费的时候,想过用职责链计算有效消费,以及通过策略模式分类型计算消费。但在尝试的过程中,都以失败告终。
2,逻辑不清,导致系统报错后,无从调错。
最深印象的就是有一个错,和师傅们一起都调了好两天。自己也调了两天,但是逻辑不清,导致一些问题都无法解决。也算是因祸得福吧,把那个错调完之后,对于系统的逻辑,运行步骤,以及调错方法,一般系统报错都掌握了很多,所以后来的学习中,问题基本上没有。每次报错,都能很快控制出错范围和出错原因。
3,不太清楚应该将图放在文档中的什么位置。后来是参考了其他同学,包括师傅给的范例给加上去了。相对于第一次画图,这次画的美观、合理太多。
四、验收中的问题
1,分层中的逻辑问题
这也是对于每一层的职责混乱所导致的。大的问题是没有,只是应该在B层进行的逻辑判断,给放到了U层,造成U层很冗杂。还有就是,本应该在外观对方法进行封装的,也没有,造成了外观的作用体现不大。
2,注释的规范化
这个问题主要体现在接口,在接口层通过单引号加的注释,没有规范化,所以导致在B层通过工厂调用的时候,没有对方法进行提示说明。
3,图示说明
在文本文档的完善时,实体的类图,没有添加文本注释,在实际的应用中,实体和数据库的表可能会是不一样的,不能通过数据库设计对实体类图进行说明。在应用的过程中,应该做到:有图就有说明。
4,消费金额的计算逻辑
是以坐出租车的原型进行迁移的,但在最小金额和最小消费时间这两个的理解有点矛盾,机房的收费和出租车的收费还是有差距的。消费金额,必定是根据单位时间消费和消费时间确定的。
五、学习收获
1,技术上
首先,是了解了三层的使用。对比第一次的机房,用外行人的话说就是:代码看着都要舒服、规范很多。然后,自己的感受是,比起第一次机房,在逻辑上,职责分工上,要清楚很多,在修改的时候,比较容易。也就是所谓的:耦合低。
其次,是在实践的过程中,再一次的学习了设计模式。虽然有些还是没能倒腾清楚,但是,有了这些铺垫,我相信以后的学习,会减负很多。
最后,是调错能力。师傅说,自己掌握一些调错的方法,也算是找到了一个耐心的师傅。有错就给你报,还永远不会歇菜和不耐烦。
2,思想上
首先,遇到问题,自己要思考,这是肯定的,但不能走进了死胡同。要深刻理解:不赞成遇到问题交流和不反对遇到问题交流。
其次,不能急于求成。做事儿,都一步一步的来,急于求成,先不说能不能成,就算成了之后,也会有一些后遗症。现在的学习,都是为了以后的学习做铺垫,反正,出来混的,都是要还的。
然后,做系统做软件,应该重视用户的需求。在需求不明朗的时候,花时间去弄清楚需求,也不要花时间去猜去尝试需求。在做系统的过程中,因为对机房的具体使用需求不清楚,导致了大返工,经验教训,引以为戒。
最后,数据备份。要对自己的数据进行备份保存。因为有时候调错,会对系统进行一些修改。还有就是有时候在逻辑上出了问题,需要修改。在做这些的时候,都应该先对原始数据进行备份,以免无法恢复或者恢复困难。在数据备份的过程中,还应该合理命名,从名称知道数据的内容。(要是全部都是:机房重构N,在使用的时候会有一定的难度)
.NET重构(九):机房重构验收总结的更多相关文章
- 机房重构包图(从三层+实体到三层+实体+外观+工厂+接口+SQLHelper)
刚刚开始接触三层的时候,我只做了两个登录小窗体的例子.画了简单的包图,可以说,为后面机房重构留下了大量的工作(因为三层理解没有深度,也没有理解出自己的东西).不过,欠下的总要还的.在做机房重构的时候, ...
- 机房重构——泛型和“DataTable”
前言 我们都知道在机房重构的时候,大多数都在用七层进行重构,每一层都依赖实体.所以不管怎么调用,返回的应该是实体参数,这样才符合大多数的逻辑,这样我们试想一下,如果我们要求在U层返回多个实体值,怎么办 ...
- 【机房重构】—上机&订餐
前几天通过UML图中的时序图.让我对于机房重构中的每一条线理解的更加清晰.曾经认为上机特别的乱,在一次偶遇中,得知了原来它能够转化成我们平时订餐.以下就听我说一说上机&订餐的故事吧! 又是发生 ...
- 【C#】万事开头难(二)<机房重构>
前言 机房将要进行完了,之所以仍然使用这个题目,是由于我想告诉自己.无论面对多么未知的事物.不要害怕,去做就好.在这么多天的机房重构中,发现了好多问题,也攻克了好多问题,今天,就把我解决的问题分享给大 ...
- 机房重构所遇问题"未能载入文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件"的解决的方法集锦
敲七层登录的时候.忽然间认为敲三层搞清的思路瞬间又凌乱了.花了一天的时间边敲边梳理,最终整完了,执行的时候弹出了这种错误:未能载入文件或程序集"DAL"或它的某一个依赖项. 系统找 ...
- 【Java重构系列】重构31式之封装集合
2009年,Sean Chambers在其博客中发表了31 Days of Refactoring: Useful refactoring techniques you have to know系列文 ...
- 重构前VS重构后效果对比
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42554641 学习重构已经一个多月了,虽然不能让代码特别的 ...
- 【机房重构】SQL之视图
近期在重构机房收费系统,越往后就会越感觉到这里很多其它的是对之前学过知识(数据库,设计模式)的一种应用和回想.比方在登录功能中用到了抽象加反射,在学生下机中,我们能够用触发器来同一时候更新两个表.这里 ...
- 机房重构——UML图最终版本
刚开始画图时确实很纠结,那时候是在师父的逼迫下不得不画,不过这样也是有好处的,在师父的强烈要求下,我学会了如何使用EA,也对一个学习一个新的软件有了一个更好的方法,可以去找一些视频,或者文字资料来帮助 ...
随机推荐
- vim编辑器高级应用
1. vim主要模式介绍 命令模式.命令行模式.编辑模式 字符操作:i 当前插入, I行首插入, a当前字符之后插入,A行首插入, ESC退出当前模式 2. vim命令模式 3. vim插入模式 4. ...
- JQ中的问题
$(function(){$(document).bind("click", function (e) {$(e.target).closest("p").cs ...
- PaaS基础学习(1)
PaaS基础学习(1) PaaS学习笔记目录 PaaS基础学习(1) 在PaaS上开发Web.移动应用(2) PaaS优点与限制(3) 1. 基础单元,一个基础单元就是所研究实体的最小的不可分割的单元 ...
- SP2-0734: 未知的命令开头 "imp scott/..." - 忽略了剩余的行。
Oracle数据导入报错:SP2-0734: 未知的命令开头 "imp scott/..." - 忽略了剩余的行. 原因:进入sqlplus里是不能执行imp的(sqlplus不认 ...
- (七)mybatis之创建SqlSession
前文提到了SqlSessionFactory接口,可以用来生产SqlSession.而SqlSession其实也是一个接口类,也就是起到一个门面的角色.那么谁是真正干活的呢?------Executo ...
- Kafka-broker配置说明
配置文件在config/server.properties 下面的一些配置可能是你需要进行修改的. broker.id 整数,建议根据ip区分 log.dirs kafka存放消息文件的路径, 默认/ ...
- C#编写高并发数据库控制
往往大数据量,高并发时, 瓶颈都在数据库上, 好多人都说用数据库的复制,发布, 读写分离等技术, 但主从数据库之间同步时间有延迟.代码的作用在于保证在上端缓存服务失效(一般来说概率比较低)时,形成倒瓶 ...
- vue计算属性无法监听到数组内部变化
计算属性可以帮助我们简化代码,做到实时更新,不用再自己添加function去修改data. 首先看一下计算属性的基本写法(摘自官网) var vm = new Vue({ el: '#demo', d ...
- TryEnterCriticalSection
if (TryEnterCriticalSection(&g_cs) == FALSE) { 返回 } else { 进入临界区 LeaveCriticalSection(&g_cs) ...
- 【Java_基础】Java内部类详解
1.四种内部类 java中的四种内部类:成员内部类.静态内部类.局部内部类和匿名内部类.其中匿名内部类用到的最多. 1.1.成员内部类 若一个类定义在另一个类的内部作为实例成员,我们把这个作为实例成员 ...