但假如被合并的代码所在的类具有某种并列关系,甚至是同一个父类下的多个子类,或者同一接口的多个实现类,则我们可以采用继承的方式解决代码复用的问题。具体做法是这样的,第一步还是整理原有的代码,通过比较,将需要重构的多份原代码中相同的与不同的代码整理出来。在整理过程中,可以将不同的代码,保留在各自的原程序中,而将相同的代码抽取出来成为独立的函数。这些函数就是我们后面需要抽象、合并、复用的代码。下一步呢,就是运用“抽取父类(ExtractSuperclass)”的
系统 2019-08-29 21:59:08 1390
说了那么多理论,我们来看看怎样使用抽取方法来重构遗留系统。如前所述,重构的过程首先是阅读程序代码,边阅读边整理程序。将功能相对独立的代码段放在一起,在前面加上注释。调整一些程序的顺序,将相关的代码尽量放在一起,但要保证程序执行的结果不会发生改变。比较典型的,将变量的定义与使用变量的代码放在一起。这个步骤比较实用,因为许多的遗留系统,其代码都有一个坏毛病,就是在程序开始时定义一大堆变量,但要弄清这些变量都用来做什么,却十分困难。边读边调整,将变量的定义逐渐迁
系统 2019-08-29 21:59:02 1390
在我们的项目中遇到这样一个问题:我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。我们以往在spring和hibernate框架中总是配置一个数据源,因而sessionFactory的dataSource属性总是指向这个数据源并且恒定不变,所有DAO在使用sessionFactory的时候都是通过这个数据源访问数据库。但是现在,由于项目的需要,我们的DAO在访问sessionFactory的时候都不得不在多个数据源中不断
系统 2019-08-29 21:58:55 1390
早在两年前,就有电子商务巨头将目光瞄准到手机应用,但由于受制于终端、带宽和支付的限制,终究有些“雷声大雨点小”。近两年,iPhone、iPad和Android设备的出现彻底改变无线应用方式,加上电信运营商、第三方支付的移动支付业务日趋成熟,电子商务在无线互联网领域有望取得比PC端更广阔的前景。让我们看看他们怎么说:IDG资本副总裁李丰透露:手机上的B2C网站爱购网,每个月已经有几百万的流水;凡客无线推出一个月后,每天订单数已达千;京东商城无线业务负责人杨思
系统 2019-08-12 09:30:09 1390
1.查看本机系统及python版本#cat/etc/redhat-releaseCentOSrelease6.7(Final)查看CentOSrelease6.7(Final)自带的python版本#python-VPython2.6.6注意,我们不要破坏系统的Python环境,因为几个关键的实用应用程序依赖于系统默认的Python2.6.6,如果破坏了系统的Python环境就会发生很多难以预见的错误,导致要重装系统。2.yum安装开发工具库集及一些额外包
系统 2019-09-27 17:56:57 1389
定制pattern的string模板(template)详解string.Template的pattern是一个正则表达式,可以通过覆盖pattern属性,定义新的正则表达式.如:使用新的定界符"{{",把{{var}}作为变量语法.代码:#-*-coding:utf-8-*-'''''Createdon2014.6.5@author:Administrator@edition:python3.3.0,eclipsepydev'''importstring
系统 2019-09-27 17:56:16 1389
python动态语言在运行时可以改变类的结构,添加属性,添加方法删除函数添加属性:就是在类的结构以外添加属性也可以修改1.添加对象属性(1)p1.age="123"#使用对象名创建(2)setattr(p1,"home","阳光小区")#使用内置方法设置和取得属性值getattr(p1,"home")#取得新增属性的值2.添加类属性(1)Preson.ID=111112#使用类名创建添加方法:3.添加对象方法importtypesdefstudy(self
系统 2019-09-27 17:55:39 1389
最近新需求来了,要给系统增加几个资源权限。尽量减少代码的改动和程序的复杂程度。所以还是使用装饰器比较科学之前用了一些登录验证的现成装饰器模块。然后仿写一些用户管理部分的权限装饰器。比如下面这种defpermission_required(permission):defdecorator(f):@wraps(f)defdecorated_function(*args,**kwargs):ifnotcurrent_user.can(permission):ab
系统 2019-09-27 17:55:30 1389
理论知识见:https://blog.csdn.net/zwqjoy/article/details/80431496https://sklearn.apachecn.org/docs/0.21.3/12.htmlBagging:importitertools#相当多的牛逼闪闪的数学算法importnumpyasnpimportmatplotlib.pyplotaspltimportmatplotlib.gridspecasgridspec#调整子图位置大
系统 2019-09-27 17:55:22 1389
Python没有真正的全局变量,在Java和C++中,全局变量则是程序级别的,站在它们的角度,那么python就是没有全局变量,而在python的角度,是有全局变量,python提供global关键字,可以修改全局变量,在python中的全局变量只是针对当前python文件/模块所定义的,python文件就是一个模块,独立的命名空间,模块内定义的变量就只属于该命名空间,so,python没有真正的全局变量,全局变量也只是文件级别。所以Python的全局变量
系统 2019-09-27 17:55:20 1389