导读:机房收费系统个人重构版,在寒假前,已经结束了.嗯,这一路的过程,也挺心酸的.结合师傅验收时的指导.建议,对这一段时间的学习,进行一个总结. 一.学习过程 这一阶段的学习,按照师傅给的建议是:由浅入深,逐步深入.所以,学习起来的困难没有太大.开始师傅是让好好领悟三层,跟我说把三层真正弄懂了,后面就比较顺利.所以,在三层的学习中,大概是花了半个月左右.学完三层,师傅就让先用三层敲通登录.添加 / 删除 / 查询 / 修改用户这五条线.可能也是之前的三层学的还算扎实,这五条线的完成都是比较顺利的…
刚刚开始接触三层的时候,我只做了两个登录小窗体的例子.画了简单的包图,可以说,为后面机房重构留下了大量的工作(因为三层理解没有深度,也没有理解出自己的东西).不过,欠下的总要还的.在做机房重构的时候,问题出现了.如果只用三层+实体,我能做出来,但是,要求重构不能只用三层+实体,那么,就要好好分析一下了. 首先说说三层+实体:就是表现层(U层)直接调用业务逻辑层(B层)的逻辑,业务逻辑层在直接访问数据层(D层),在把数据返回到B层后返回到U层.首先,只用三层+实体做程序时,灵活性不够高.如果想换数…
前言 我们都知道在机房重构的时候,大多数都在用七层进行重构,每一层都依赖实体.所以不管怎么调用,返回的应该是实体参数,这样才符合大多数的逻辑,这样我们试想一下,如果我们要求在U层返回多个实体值,怎么办,返回一个布尔进行B层的判断,这些问题,根据SQLHelper,增.删.改.查四条线,分为了无参和有参两种类型,查询的时候我们要求返回一个datatable,可是如果单单用这个datatable返回会不会么有实体的事情了.所以这时候泛型就出来了.在我看来它集成了所以实体的集合,方便,简单,减少内存的…
前几天通过UML图中的时序图.让我对于机房重构中的每一条线理解的更加清晰.曾经认为上机特别的乱,在一次偶遇中,得知了原来它能够转化成我们平时订餐.以下就听我说一说上机&订餐的故事吧! 又是发生在一个风和日丽的早上(廊坊师范学院时间:11:30).事实上对于大多数人来说应该是中午了吧.睁开朦胧的睡眼,拿起手机看了看Time,到了吃饭的时间了.因为昨天晚上一直整理自己的机房收费系统上机部分.到非常晚才睡.朦胧记得我最后"搞"成功了!为了庆祝我昨天的战果于是果断在美图团网上订了一份排…
前言 机房将要进行完了,之所以仍然使用这个题目,是由于我想告诉自己.无论面对多么未知的事物.不要害怕,去做就好.在这么多天的机房重构中,发现了好多问题,也攻克了好多问题,今天,就把我解决的问题分享给大家. 充值中的分行显示 在充值和退卡功能窗口中,我们会将一些信息分行显示到lablebox中,那么这个分行是怎么做到的呢? lblDetail.Text = "充值卡号: " + txtCardNo.Text.Trim() + System.Environment.NewLine+&quo…
敲七层登录的时候.忽然间认为敲三层搞清的思路瞬间又凌乱了.花了一天的时间边敲边梳理,最终整完了,执行的时候弹出了这种错误:未能载入文件或程序集"DAL"或它的某一个依赖项. 系统找不到指定的文件. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""> &…
2009年,Sean Chambers在其博客中发表了31 Days of Refactoring: Useful refactoring techniques you have to know系列文章,每天发布一篇,介绍一种重构手段,连续发文31篇,故得名“重构三十一天:你应该掌握的重构手段”.此外,Sean Chambers还将这31篇文章[即31种重构手段]整理成一本电子书, 以下是博客原文链接和电子书下载地址: 博客原文:http://lostechies.com/seanchamber…
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42554641 学习重构已经一个多月了,虽然不能让代码特别的整洁.高大尚,但是相比之前写的代码,感觉自己进步很大.特别是我会尽量地减少成员变量的数量,让方法变得短小,减少临时变量的数量.........这些在本文之前的重构方法中都有涉及,我想也许这就叫做学以致用吧.不知你是否也和我一起同在学习.努力,不知你从这些重构文章中是否有所收获.但是,我想,不管怎么,…
近期在重构机房收费系统,越往后就会越感觉到这里很多其它的是对之前学过知识(数据库,设计模式)的一种应用和回想.比方在登录功能中用到了抽象加反射,在学生下机中,我们能够用触发器来同一时候更新两个表.这里就先说一下视图的使用,关于视图的有点和作用百度上有非常多答案,在此不再赘述. 视图定义: 自己理解:在涉及到多张表的操作的时候就可使用视图.这样能够避免与数据库直接联系.而且当你更新数据库数据时,就会自己主动更新视图中的数据,方便以后查询. 百度百科:计算机数据库中的视图是一个虚拟表,其内容由查询定…
刚开始画图时确实很纠结,那时候是在师父的逼迫下不得不画,不过这样也是有好处的,在师父的强烈要求下,我学会了如何使用EA,也对一个学习一个新的软件有了一个更好的方法,可以去找一些视频,或者文字资料来帮助我们学习使用新的软件. 每一次画图都有一次新的认识,经过这次又条例的整理之后对软件的需求有了更深的理解,我们分这么多层就是为了能够更好的解耦合. 下面是我针对此次个人重构画的图 U层:每个功能是一个类 Facade层: 进一步提高的地方:要将每一个功能分清楚应该属于哪一个类,这样能够均衡,画时序图时…
分层 分层是为了减少层与层之间的依赖,添加程序的可读性,让整个系统结构清晰明白.还可大大减少维护成本,可是分层也有一定的缺点,有些能够直接訪问数据库的层,却要通过负责訪问数据库的层进行訪问.这样,在訪问数据库过程中就多出一个环节,添加了系统的开销,有时候要在表示层添加某个功能.为了减少耦合,就不得不自上而下,在每一层里面添加这个功能所需的服务类,这样就添加了开发成本 分层越多越好吗?答案是否定的,引用一句话"我们也要     时刻谨记:不能盲目分层,不应分层而分层不应模式而模式. 这是非常重要的…
前言 和VB须要引用其它报表软件不同,VS自带报表设计的功能,初次尝试.就感受到了它的强大之处. 报表制作 话不多说.直接报表的制作过程. 1.首先,我们要先制作一个报表的容器.放到我们显示报表的窗口上. 2.然后,加入一个报表. 3.报表加入完毕后,我们会看到报表的相关数据. 4.依次加入好数据源和数据集,測试连接成功. 5.成功后如图所看到的. 加入要使用的參数. 6.然后我们就能够在报表工具箱里加入自己所须要的东西.如,表.文本框等.这里的表能够直接引用数据集中内容.点击表里的那个小图标就…
重构第二式:搬移方法 (Refactoring 2: Move Method) 毋容置疑,搬移方法(Move Method)应该是最常用的重构手段之一,正因为太常用而且较为简单,以至于很多人并不认为它是一种很有价值的重构,但事实并非如此,在最初的代码诞生之后,有些方法可能会被放在一些不合适的地方,例如,一个方法被其他类使用比在它所在的类中的使用还要频繁或者一个方法本身就不应该放在某个类中时,我们应该考虑将它移到更合适的地方.搬移方法,顾名思义就是将方法搬移至合适的位置,如将方法搬移到更频繁地使用…
以前上学的时候,听到“一个学生在毕业后刚刚开始编程的头几年中,写出的代码多半是垃圾”这样的说法,均不屑一顾.现在工作一年多了,越发感觉自己代码中疏漏处甚多,故近来常做亡羊补牢的重构之举.拿自己4个月前写的数据访问层来说,这个层位于整个系统的最底端,根据传入的sql语句进行查询和更新操作.就拿查询来说吧,我当时觉得很简单,写出来的方法是这样的:  1//代码段1 2public DataTable ExecuteQuery(string cmdText) 3{ 4    if (cmdText =…
https://coolshell.cn/articles/5201.html/comment-page-2#comment-1932554 过去半年基本上完整经历了这个文章的各个阶段,看完文章结合自己的经历,发现的确有些值得反思,但是哪怕过程太痛苦,但如果是一个自己要长期维护的模块,”至少亲生的bug更好看些吧”,如果一开始的需求就复杂,没有条理,代码第一版设计者没有充分的和需求方整理需求,盲目编码形成第一版难以维护的代码,后面的人几乎不可能根据代码还原出需求的原貌,甚至是需求方自己也很难确定…
欢迎大家前往云加社区,获取更多腾讯海量技术实践干货哦~ 作者简介:xianmau,2015 年加入腾讯 TEG 架构平台部,一直负责 QQ 相册平台的维护和建设,主导相册上传架构重构和容灾优化等工作.主要研究方向为口语对话系统.分布式系统架构设计和优化,发表对话系统相关学术论文 3 篇,系统架构相关专利 2 篇. 本文由腾讯技术工程官方号发布在云加社区. 写在前面 QQ 相册作为重量级资深业务,稳定运营.有效容灾,一直是相册团队追求的目标.QQ 相册架构一直在演变进化,本文重点介绍相册最新的一次…
14.总结 首先,这是一本太老的书,很多观点已经被固化或者过时了.但核心观点没有问题,虽然大多数观点已经被认为是理所当然的事情了.   重构的定义 重构分几种: 1.狭义的代码重构   就是本书讲的,在不改变软件可观察行为的前提下,改变其内部结构.这就是完全不改变程序的功能,只是改变代码的组织方式,也就是只是整理代码而已,目的是优化代码架构,而不是优化行为.算法.逻辑或流程. 2.普通意义的重构 事实上,我们一般很少会去做纯粹的重构,所以,了解了软件行为,从行为.算法.逻辑或流程上进行优化,,往…
导读:在机房重构的时候,就用到了SQLHelper,但那时候即使把代码反复看了很多遍,也看了注释,还和同学交流,也依然是半懂不懂.现在,我再次用到了SQLhelper这个东西,就来说说SQLHelper是怎么构建的. 一.Why?(为什么用) 1,首先看普遍性的D层操作 <span style="font-size:18px;"><span style="font-size:24px;">/**************************…
导读:在机房重构中,有好些个查询都是大同小异,最为显著的就是组合查询了.怎样给自己省事儿,相同的东西能不能重复利用,就成了一个现实的问题.第一遍做机房的时候,使用的更多的是:复制+粘贴.学习了设计模式后,可以用模板方法解决.这篇文章,就通过窗体继承和模板方法,实现组合查询. 观点:组合查询在机房中有3中情况,其实,组合查询完全可以看到是一种查询情况. 一.窗体继承的使用 1,首先建立一个父窗体 2,添加一个新项 3,选择继承窗体 4,确定后,一个新的继承窗体就好了. 二.模板方法的使用 备注:定…
导读:在机房重构的时候,为了降低耦合,不能返回DataTable型数据,而需要转换为泛型集合.我一直使用的就是IList,那天师傅过来帮我挑错,问我:你为什么一直写IList呢,不应该是List吗?好吧,然后,我才突然发现,我一直都写错了.不过,我真的错了吗?那么,它们之间又是什么关系呢? 一.基础概念 1,集合(ArrayList) 是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处. 2,List 有序的 colle…
写在前面 <重构:改善既有代码的设计>是一本经典的软件工程必读书籍.作者马丁·福勒强调重构技术是以微小的步伐修改程序. 但是,从国内的情况来而论,"重构"的概念表里分离.大家往往喜欢打着"重构"的名号,实际上却干的是"刀劈斧砍"的勾当.产生这种现象的原因,一方面是程序员希望写出可维护,可复用,可拓展,灵活性好的代码,使系统具长期生命力:另一方面,重构的扎实功夫要学起来.做起来,颇不是一件轻松的事,且不说详尽到近乎琐碎的重构手法,光是单…
系列目录 前言:  这应该是本系统最后一次重构,将重构BLL层和Model层.来完全取代代码生成器生成的BLL层和DAL层.完全废掉了代码生成器的DAL,BLL,MODEL层.  全自动生成增,删,改,查的通用方法和模型转换与BLL层的模型事务脱离,后续文章,会以一些插件或功能为目的,继续完善,进行分享,最后60节的文章会对本系统做一个总结 (但是还没时间写,相信60节的文章能让你快速了解到本系统的优势和架构,就算你从未阅读之前的所有文章)   继上次的DAL层重构(上一节),本来只想重构DAL…
本文目录列表: 1.sys.sp_helptext存储的功能和效果 2.重构sys.sp_helptext存储(命名为dbo.usp_helptext)提供直观的效果 3.sys.sp_helptext和dbo.usp_helptext的限制以及解决方案 4.总结语 5.参考清单列表   1.sys.sp_helptext存储的功能和效果   近来在研究sql server提供的现实可编程对象定义体的方法包括:sys.syscomments(视图).sys.all_sql_modules(sys…
定义 重构的定义:在不改变软件可观察行为的前提下,改善其内部结构. 其中,不改变软件行为,是重构最基本的要求.要想真正发挥威力,就必须做到“不需了解软件行为”. 如果一段代码能让你容易了解其行为,说明它还不是那么迫切需要被重构. 需要重构的代码,你只能看到其中的“坏味道”,接着选择手段消除这些“坏味道”,然后才有可能理解他的行为. 构建测试体系 确保每个类每个方法都有对应的测试代码.一套测试就是一套BUG检测器,能够大大缩减查找BUG所需时间. 编写测试代码最有效的时机,实在开始编程以前.能使你…
一 引子 为了让更多的编程初学者,轻松愉快地掌握面向对象的思考方法,对象继承和多态的妙用,故推出此系列随笔,还望大家多多支持. 二 本节内容---重构代码,利用继承多态 1. 主界面截图如下: 2. 根据完成挡板和小球类的编写后,会发现挡板类和小球类代码中有非常类似的属性和方法,进一步思考,后续还需画砖块和子弹等图形,即要构建砖块和子弹类的同时还会有代码的重复,这样的现象是不好的程序编码,所以要重构代码.重构方法是:将挡板类和小球类的属性和方法提取成一个父类,挡板类和小球类都继承这一父类. 父类…
[.net 面向对象编程基础] (14) 重构 通过面向对象三大特性:封装.继承.多态的学习,可以说我们已经掌握了面向对象的核心.接下来的学习就是如何让我们的代码更优雅.更高效.更易读.更易维护.当然了,这也是从一个普通程序员到一个高级程序员的必由之路.就看病一样,普通医生只能治标,高级医生不但看好病,还能除病根. 1.什么时重构? 重构(Refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性.…
一年之计在于春,大自然开始了新元素的重构.你的知识库是否也该重构更新呢? 本期 fir.im Weekly 包含最新的Android.iOS 开发工具.源码和好玩的UI 动画分享,希望对你有用. Swift 性能探索和优化分析 @onevcat 在这篇文章分析了使用 Swift 进行 iOS/OS X 开发时性能上的考量和做法,也结合自己这一年多来使用 Swift 进行开发的经验,给出了相对应的解决方案. 正在学习 Swift 的开发er,来这里看看. iOS 知识体系重构 代码需要重构,自己的…
命名空间其实只是一个形式,最终目的是重构代码,但这个过程想要一蹴而就是不可能的. 一开始给了一个伪命题:基于ThinkPHP的重构(不要问为什么).经过一段的实践,发现这是一个大错特错的思维方式,其中遇到的坑在此略过不表. 首先,不要想着全盘基于命名空间重写,而应该是基于局部的. 最终思考后的结果,是以Model层基于命名空间改造为目标,这样可以在新的框架下重用系统中Model层资源.因为理论上Model层只与数据打交道,耦合度最低. 但改造过程也发现一些问题,原来的Model层耦合了业务逻辑,…
阅读目录: 1.开篇介绍 2.迭代测试.重构(强制性面向接口编程,要求代码具有可测试性) 2.1.面向接口编程的两个设计误区 2.1.1.接口的依赖倒置 2.1.2.接口对实体的抽象 2.2.迭代单元测试.重构(代码可测试) 2.2.1.LINQ表达式对单元测试的影响 1]开篇介绍 最近一段时间结束了一个小项目的开发,觉得有些好东西值得总结与分享,所以花点时间整理成文章: 大多数情况下我们都知道这些概念,面向接口编程是老生常谈的话题了,有几年编程经验的都知道怎么运用:单元测试其实在前几年不怎么被…
Eclipse 中的重构功能使其成为了一个现代的 Java 集成开发环境 (IDE),而不再是一个普通的文本编辑器.使用重构,您可以轻松更改您的代码,而不必担心对别处造成破坏.有了重构,您可以只关注于所编写代码的功能, 而不必分心去考虑代码的外观如何,因为之后您可以使用重构工具来快捷地将代码变成整洁而高度模块化的代码.本文将向您介绍如何使用 Eclipse 中的一些功能强大的重构函数. 重构类型 重命名 Rename 应该是 Eclipse 中重常用的重构.利用这个重构,可以对变量.类.方法.包…