当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪《重构》----处理概括关系      一、字段上移 1、如果两个子类拥有同样的字段,可以将该字段移至超类。 2、可以减少子类重复的声明。 3、可以在父类实现该字段的行为,减少行为的重复。 二、函数上移 1、如果函数在.........
    ▪谷歌测试和传统QA区别      我这里所指的传统QA指的是在瀑布式研发流程中的测试工作。 业界星转斗移,对测试工作这些年最大的冲击有两项:自动化测试和敏捷流程。自动化测试使得古老的黑盒测试受到的挑战,对测.........
    ▪Windows 下安装、配置git      Windows下安装git,并且与github连接。 1.安装git,下载地址 : https://code.google.com/p/msysgit/ 。 2.设置github上的用户名和email地址 Username First you need to tell git your name, so that it can properly label.........

[1]《重构》----处理概括关系
    来源: 互联网  发布时间: 2013-11-19

一、字段上移

1、如果两个子类拥有同样的字段,可以将该字段移至超类。

2、可以减少子类重复的声明。

3、可以在父类实现该字段的行为,减少行为的重复。


二、函数上移

1、如果函数在各个子类中都产生相同的结果,那么应该将其移至超类。

2、可以避免行为的重复,重复的万恶之源。


三、构造函数本体上移

如果各个子类拥有一些本体几乎完全相同的构造函数,那么应该在父类中新建一个构造函数,然后子类在构造函数中调用它。


四、函数下移

如果一个函数只与部分子类有关,那么应该将这个函数移到相关的子类中去。


五、字段下移

如果父类的一个字段只是被部分子类用到,那么应该移动啊相关的子类中去。


六、提炼子类

如果类中的一些特性只被部分的实例用到,那么新建一个子类,将上面所说的那一部分移到子类中去。


七、提炼父类

1、如果两个类有相似的特性,那么为这个两个类建立一个父类,将相同的特性移至父类中。

2、又是去掉重复代码。


八、提炼接口

1、如果几个类的接口有相同的部分,或者被使用的只是接口的子集,那么可以将相同的子集提炼到一个独立的接口中。

2、接口是一大进步。


九、折叠继承体系

如果父类和子类之间没有太大的区别,那么可以将它们合为一体。


十、塑造模板函数

1、如果子类中有些方法一相同的顺序执行类似的操作,但是各个操作的细节上不同,那么可以将这个操作分别放进独立的函数中,并保证相同的函数签名,这样原函数也就变的相同了。将原函数移到父类。

2、这个就是设计模式的模板函数。


十一、以委托取代继承

1、如果子类只使用父类的一部分接口,或者根本不需要继承而来的数据,那么可以在子类中新建一个字段用来保存超类,然后调整子类函数,让它改为委托超类,最后取代它们的继承关系。

2、其实就是用组合提到继承。

3、这个就是设计模式中的委托模式。


十二、以继承取代委托

1、如果两个类是委托关系,并且经常为整个接口编写很多简单的委托函数,那么可以用委托继承委托类。

2、如果委托对象不止被其他一个对象共享,而且委托对象是可变的,在这个情况下,不能以继承取代委托。

作者:c183662101 发表于2013-5-4 14:40:52 原文链接
阅读:1 评论:0 查看评论

    
[2]谷歌测试和传统QA区别
    来源: 互联网  发布时间: 2013-11-19

我这里所指的传统QA指的是在瀑布式研发流程中的测试工作。

业界星转斗移,对测试工作这些年最大的冲击有两项:自动化测试和敏捷流程。自动化测试使得古老的黑盒测试受到的挑战,对测试人员的门槛要求骤然提高;敏捷则进一步加剧了混乱,不少测试人员发出了QA是不是在敏捷中无用了的哀叹,从而对QA的职业生涯产生了怀疑。

这些冲击很多来自工业领军的公司,比如谷歌。能够翻墙的朋友,可以在youtube看到不少谷歌如何做测试的视频。

如果我们把谷歌和传统QA相比,可以看出一些改进的线索。

我们先把测试从测试对象层次上分为单元测试,接口测试和功能测试。

单元测试指的是对函数级别的测试,常用工具有JUnit等。接口测试指的是对组件或模块外露的API的测试。功能测试指的是端到端的功能测试。以下是一个对比:


谷歌测试 vs 传统QA   单元测试 接口测试 功能测试 谷歌 强                 强               20-40%自动化,其余外包 传统QA 弱 中等 强,人数多
谷歌的实践从效率和质量,更加符合互联网时代快鱼吃慢鱼的现状。而传统QA转型,最大的难度在那里呢?以下是常见问题:
1. 大量的没有单元测试的遗留代码。一是Mock的难度很大,同时工作量巨大,管理层很难下决心
2. 部分开发人员抵制单元测试,因为他们更喜欢写功能
3. 测试人员冷眼,因为他们的主要技能积累和信心经验在功能测试,对单元测试和接口测试的成功率没有信任感。

要实现转型,大量培训和尝试必不可少。管理层的决心和恒心往往是成败的关键。

作者:cunruizhai 发表于2013-5-5 10:06:40 原文链接
阅读:0 评论:0 查看评论

    
[3]Windows 下安装、配置git
    来源: 互联网  发布时间: 2013-11-19

Windows下安装git,并且与github连接。


1.安装git,下载地址 : https://code.google.com/p/msysgit/ 。




2.设置github上的用户名和email地址

Username

First you need to tell git your name, so that it can properly label the commits you make.

git config --global user.name "Your Name Here"# Sets the default name for git to use when you commit
Email

Git saves your email address into the commits you make. We use the email address to associate your commits with your GitHub account.

git config --global user.email "your_email@example.com"# Sets the default email for git to use when you commit

Your email address for Git should be the same one associated with your GitHub account. If it is not, see this guide for help adding additional emails to your GitHub account. If you want to keep your email address hidden, this guide may be useful to you.


3.生成SSH key。

Step 1: Check for SSH keys

First, we need to check for existing ssh keys on your computer. Open up Git Bash and run:

cd ~/.ssh
# Checks to see if there is a directory named ".ssh" in your user directory

If it says "No such file or directory" go to step 2. Otherwise, you already have an existing keypair, and you can skip to step 3.


    
最新技术文章:
▪主-主数据库系统架构    ▪java.lang.UnsupportedClassVersionError: Bad version number i...    ▪eclipse项目出现红色叉叉解决方案
▪Play!framework 项目部署到Tomcat    ▪dedecms如何做中英文网站?    ▪Spring Batch Framework– introduction chapter(上)
▪第三章 AOP 基于@AspectJ的AOP    ▪基于插件的服务集成方式    ▪Online Coding开发模式 (通过在线配置实现一个表...
▪观察者模式(Observer)    ▪工厂模式 - 程序实现(java)    ▪几种web并行化编程实现
▪机器学习理论与实战(二)决策树    ▪Hibernate(四)——全面解析一对多关联映射    ▪我所理解的设计模式(C++实现)——解释器模...
▪利用规则引擎打造轻量级的面向服务编程模式...    ▪google blink的设计计划: Out-of-Progress iframes    ▪FS SIP呼叫的消息线程和状态机线程
▪XML FREESWITCH APPLICATION 实现    ▪Drupal 实战    ▪Blink: Chromium的新渲染引擎
▪(十四)桥接模式详解(都市异能版)    ▪你不知道的Eclipse用法:使用Allocation tracker跟...    ▪Linux内核-进程
▪你不知道的Eclipse用法:使用Metrics 测量复杂度    ▪IT行业为什么没有进度    ▪Exchange Server 2010/2013三种不同的故障转移
▪第二章 IoC Spring自动扫描和管理Bean    ▪CMMI简介    ▪目标检测(Object Detection)原理与实现(六)
▪值班总结(1)——探讨sql语句的执行机制    ▪第二章 IoC Annotation注入    ▪CentOS 6.4下安装Vagrant
▪Java NIO框架Netty1简单发送接受    ▪漫画研发之八:会吃的孩子有奶吃    ▪比较ASP和ASP.NET
▪SPRING中的CONTEXTLOADERLISTENER    ▪在Nginx下对网站进行密码保护    ▪Hibernate从入门到精通(五)一对一单向关联映...
▪.NET领域驱动设计—初尝(三:穿过迷雾走向光...    ▪linux下的块设备驱动(一)    ▪Modem项目工作总结
▪工作流--JBPM简介及开发环境搭建    ▪工作流--JBPM核心服务及表结构    ▪Eclipse:使用JDepend 进行依赖项检查
▪windows下用putty上传文件到远程Linux方法    ▪iBatis和Hibernate的5点区别    ▪基于学习的Indexing算法
▪设计模式11---设计模式之中介者模式(Mediator...    ▪带你走进EJB--JMS编程模型    ▪从抽象谈起(二):观察者模式与回调
▪设计模式09---设计模式之生成器模式(Builder)也...    ▪svn_resin_持续优化中    ▪Bitmap recycle方法与制作Bitmap的内存缓存
▪Hibernate从入门到精通(四)基本映射    ▪设计模式10---设计模式之原型模式(Prototype)    ▪Dreamer 3.0 支持json、xml、文件上传
▪Eclipse:使用PMD预先检测错误    ▪Jspx.net Framework 5.1 发布    ▪从抽象谈起(一):工厂模式与策略模式
▪Eclipse:使用CheckStyle实施编码标准    ▪【论文阅读】《Chain Replication for Supporting High T...    ▪Struts2 Path_路径问题
▪spring 配置文件详解    ▪Struts2第一个工程helloStruts极其基本配置    ▪Python学习入门基础教程(learning Python)--2 Python简...
▪maven springmvc环境配置    ▪基于SCRUM的金融软件开发项目    ▪software quality assurance 常见问题收录
▪Redis集群明细文档    ▪Dreamer 框架 比Struts2 更加灵活    ▪Maven POM入门
▪git 分支篇-----不断更新中    ▪Oracle非主键自增长    ▪php设计模式——UML类图
▪Matlab,Visio等生成的图片的字体嵌入问题解决...    ▪用Darwin和live555实现的直播框架    ▪学习ORM框架—hibernate(二):由hibernate接口谈...
▪(十)装饰器模式详解(与IO不解的情缘)    ▪无锁编程:最简单例子    ▪【虚拟化实战】网络设计之四Teaming
▪OSGi:生命周期层    ▪Javascript/Jquery——简单定时器    ▪java代码 发送GET、POST请求
▪Entity Framework底层操作封装(3)    ▪HttpClient 发送GET、POST请求    ▪使用spring框架,应用启动时,加载数据
▪Linux下Apache网站目录读写权限的设置    ▪单键模式的C++描述    ▪学习ORM框架—hibernate(一):初识hibernate
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3