自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

翻译 code-smell-7-霰弹式修改

霰弹式修改和发散式变化是相似的但是正好是相反的。你嗅到这个每当你做出一种修改的时候,你必须在很多不同的类中做出很多小的改动。当这些改动四处都有的时候,它们是难以被发现的,这样就很容易漏掉一些重要的改动。在这种情况下你就想要使用Move Method和Move Field来把这些所有的变化点都放到一个单一的类中。如果没有一个现成的类看起来像是一个好的选择,那么新建一个。通常你可以使用In

2015-05-24 16:46:33 1419

翻译 code-smell-6-发散式变化

当我们在为我们的软件设计架构的时候是为了让修改更容易;毕竟软件它是软的。当我们想要做一个修改的时候我们总是想要能够直接跳到系统中一个单一的清楚的点然后做出修改。当你不能这样做的时候你就嗅到了两个非常接近并且相关的辛辣的气味。发散式变化通常发生当在一个类通常会因为一些不同的原因做出不同方式的修改的时候。如果你看着一个类说,“好吧,每次我需要一个新的数据库的时候我都要改变这里的三个方法;每

2015-05-24 16:42:11 1420

翻译 code-smell-5-较长的参数列表

在我们早期的编程时代,我们被教授说任何我们需要的东西都按照常规的通过参数传入。这一点是可以理解的,因为另一种方式就是全局数据,全局数据被成为魔鬼并且使用起来也有很多痛点。面向对象改变了这个局面,因为如果你没有一些你需要的东西,你总是可以要求别的对象提供给你。因此有了对象,你不需要传入这个方法需要的所有东西了;取而代之的是你传入了足够的东西,这个方法可以拿到任何它需要的。一个方法所需要的很多东西都是

2015-05-24 16:40:42 506

翻译 code-smell-4-巨类

当一个类试图做很多事情的时候,通常显示为有太多的实例变量。当一个类有太多的实例变量的时候,重复代码就不会很远了。你可以通过Extract Class来包装一些变量。在选择哪些变量放在一起作为一个组件的时候要保证每一个都是有意义的。比如说“depositAmout”和“depositCurrency”是很可能一起放进一个组件里边的。更通俗一点就是在一个类中拥有相同前缀或者后缀的那些子集变

2015-05-10 14:19:30 619

翻译 code-smell-3-长方法

那些存活的很好并且很长久的面向对象的程序都是那些有着短方法的。那些刚接触面向对象编程的程序员通常都会感觉从来没有计算发生,面向对象编程总是无穷无尽的一系列的委托。然而当你和这些程序相处几年之后,你会明白所有这些短小的方法是多么有价值。所有这些间接的收益,比如说解释、分享以及选择,都是由这些短小的方法所支撑的。因为在早期的编程世界,人们就已经意识到一个流程越长那么理解它就会变

2015-05-10 13:38:43 689

翻译 code-smell-2-重复代码

在所有这些臭味中排在第一位的就是重复代码。如果你不止在一个地方看到相同的代码结构,那么你可以确信如果你找到一个方法将它们统一会让你的程序变得更好。最简单的重复代码问题是在同一个类的两个方法中你有同样的表达式。然后你需要做的就是Extract Method然后在两个地方分别调用。另外一个常见的重复代码问题是在两个兄弟子类中你有相同的表达式。你可以通过分别在两个子类中Extra

2015-05-10 13:35:02 563

翻译 code-smell-1-定义

到这里你已经清楚重构到底是怎么做的。但是仅仅因为你知道怎么做并不代表你知道什么时候做。决定什么时候开始重构什么时候停止重构,是和知道怎么操作同样重要的。现在困境来了。解释清楚如何删掉一个实例变量或者创建一个层级是很容易的。这些都是简单问题。试图解释什么时候你应该做这些事情却不是那么简单。比起呼吁一些编程美学的模糊观念(严格的说是我们咨询师通常在做的事情),我想说一些更实用的干货。

2015-05-10 13:32:13 1117

翻译 重构的定义

我总是对定义一个东西持怀疑态度,因为每个人都有他自己对某东西的一个定义。但是当你写一本书的时候就可以选择一个自己的定义。在这种情况下我使我的定义基于Ralph Johnson小组的工作。首先要阐明的是关于重构这个词依赖于上下文有两种定义。你可能会觉得这很烦(我也确实这么认为),但是这也恰恰是另一个运用自然语言我们必须要面对的现实的一个生动的例子。第一个定义式名词形式的。

2015-05-10 13:19:56 972

原创 最近几天一点感悟

我们都希望得到别人的尊重与认可,但是这个世界的规律shi

2014-10-24 09:18:18 499

原创 http协议

决定了撒娇了房间

2014-10-21 20:55:09 896

原创 mutable variable accessible from closure

在写解析表达式的时候由于

2014-10-19 15:04:00 4131 1

原创 2014.10.10

从早上刚坐下来,就觉得有一股怪怪的e

2014-10-11 09:27:20 513

原创 web_pos(jquery实现)总结

首先总体上这个lian

2014-10-09 21:39:10 1387

原创 party-bid的三种数据结构实现

做完了party-bid已经过了一段时间了,现在再回头来

2014-10-09 19:14:57 769

原创 学习敏捷开发,party_bid故事卡4---竞价分析

上一张卡完成了

2014-08-23 16:08:48 769

原创 学习敏捷开发,party_bid故事卡3---组织竞价

当第三张卡到来的时候,我们又不得不思考我们的逻辑结构是不是需要

2014-08-09 17:19:34 797

原创 学习敏捷开发,party_bid故事卡2---活动报名

在第一张卡中,

2014-08-09 15:01:11 796

原创 学习敏捷开发,party_bid故事卡1---创建活动

party_bid是一个android手机端的应用,它的应用场景是活动主办方新建并开启活动,参与者报名活动,然后在一个活动中报名了活动的参与者可以参与活动后续的竞价。系统会对竞价结果进行分析,给出竞价成功者。竞价采用荷兰竞价算法,出价最低且不重复的竞价成功。这个项目主要的开发技术是Angular.js,使用到了localStorage来存储数据,样式库主要基于bootstrap。第

2014-08-09 09:54:50 1210

原创 初步接触angular.js---一些基本概念的理解

初步接触angular.js 在这里声明本文仅作为学习的记录,从初步接触认识angular.js到慢慢的从练习项目中逐渐对其熟悉,并逐渐体会到了它的强大和神奇首先angular的思想是MVC,将模型、视图和控制层分开,从而让程序更加条理清晰,更易于阅读,在如今这个程序更应该追求对人友好而不是对机器友好的时代这显然是非常有意义的。同时将事务逻辑与数据分离对于软件的维护和扩展显然也有着不可思议

2014-08-09 09:38:33 993

原创 Linux ubuntu mint 系统安装和基本开发环境的搭建

1、安装系统      制作ubuntu u盘安装启动盘,压缩出大概50G的磁盘空间用来安装,关机重启选择U盘启动,然后进行安装。在有选择与windows共存的页面选择压缩的磁盘空间(当然选第一个共存也可以),其他的就是下一步下一步。。2、安装chrome, skype, ibus等应用软件      chorome:直接在google官网下载安装      skype:可以在开始

2014-07-15 15:50:07 1024

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除