一个重构的例子

一个重构的例子

在看《程序员的呐喊》里面看到了关于《重构》这本书的一些描述

我注意到《重构》这本书是在2002年的时候,距离它出版已经好多年了。之前一直没读是因为出版它的是那帮搞UML的蠢货。我从来都不是他们的粉丝。

《重构》偏偏就和这样的一堆烂书挤在一起,每次看到它我都直接扫过,从不停留一秒。别在烂书上浪费时间.直到2002年冬, 我在一家书店拿起它。没有什么特别的原因,纯碎是出于好奇而已。或许我在其他什么地方听到过“重构”这个词吧。

接着一股恐惧袭上心头:他居然说的没错,有理有据。我最自豪的编程习惯——把中间值保存在局部变量里,作为简单的性能优化——显然是个坏习惯。中明明白白展示了这一点。它解释了我代码里某些方法为什么不断膨胀,那就是因为这些方法无法分割,这一点我之前我从未想到过。

这本书接着告诉我,不要写注释。又是疯话!可他说的确有道理。

我掏钱买它回家,反复研读。彻底震惊,太天才了。时至今日我也依然这么觉得,虽然那种震撼没有当天那么巨大。但这本书是在乃惊世之作,好似醍醐灌顶。这种事情可不常见。

看到这样的描述都没有办法不去把它买回来好好研读一番,而且一开始对这本书的感受也跟他描述的一样,看见过很多次,但总感觉是本烂书,都不想翻开。今天是新年第一天,正好适合醍醐灌顶,于是从第一个例子开始,仔细研究,这里也用Swift来重写这个例子。原书中用的Java,所以会在一些特性上有所不同,而且我对Swift的理解也很有限,还没有完整的用Swift开发过一个产品,所以难免会有用的不妥当的特性。

源代码地址在此

阅读全文 »

女神一号

当我弥留之间

当我弥留之间
我充满贪恋

所有划痕消失
古物簇新的影子

所有数学考试
我满分走出教室

所有佛经阐释
没有一个情字

所有姑娘回来
全是最初的模样

所有酒精聚齐
不过几千瓶的样子

所有石头开花
如果没有花草我靠什么形容她啊

所有味道终止
如果没有味道我靠什么分辨世事

当我弥留之间我充满你贪恋
我泪流满面

阅读全文 »

Think Functionally

函数在Swift里是一等公民,也就是说,函数可以被当做参数传递给其他的函数,并且函数也可以返回新的函数。如果你曾经和简单的类型打交道,比如整型、布尔型和结构体,那么这些说法就会显得很奇怪。这里我们讲尝试去解释为什么函数作为一等公民是有益的,并且实际提供函数式编程的一些例子。

阅读全文 »

JavaScript读书笔记08

JavaScript面向对象

面向对象

引用类型的实例就是对象,创建对象很简单:

var zhangsan = {
name: "zhangsan",
age: 18,
tellName: function(){
alert("My name is " + this.name);
}
}

Javascript中的对象的定义是:无序属性的集合,其属性可以包含基本值、对象或者函数。这和其他的面向对象的语言是有很大的差别,其他的面向对象语言中有两个很重要的概念,类和实例,类就是对象的模板,实例就是根据模板创建的对象。而在JavaScript中并没有类的概念。所以如果现在需要创建另外一个对象lisi,而lisizhangsan一样,也有相同的属性,应该怎么去做。这里就需要一个同类型的模板,在JavaScript中,用原型(prototype)来实现面向对象。

阅读全文 »

JavaScript读书笔记07

Function类型

函数实际上也是对象,也就是说每个函数其实都是Function类型的实例,也具有方法和属性。既然函数是对象,那么函数名就是一恶搞指向函数对象的指针,不会与特定的函数绑定。函数声明的语句一般是:

function sum(num1, num2){
return num1 + num2;
}
阅读全文 »

JavaScript读书笔记06

引用类型

回顾下之前关于引用类型的概念,引用类型的值叫做该引用类型的一个实例,也是一个对象。在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起,跟其他的面向对象语言的类是有一定的差别的。

要创建一个新的对象,可以用new操作符跟上构造函数来创建:

var person = new Object()
阅读全文 »

JavaScript读书笔记05

执行环境及作用域

作用域是个很重要的概念,决定了标识符的有效的范围。但是在ECMAScript中,我们先抛开作用的概念和思路,从一个新的概念开始,这就是执行环境,它定义了变量或者函数有权访问的其他数据,决定了它们的各自行为。并且,每个执行环境都有一个与之关联的变量对象,执行环境中定义的所有变量和函数都保存在这个对象当中。虽然无法通过代码来访问这个对象,但是理解才能更好的理解ECMAScript是如何处理数据的。

阅读全文 »

科技和工作

前几天看到MacTalk推送的文章程序员的禅与摩托车维修艺术,然后刚好,最近也正在读这本书,很多东西看起来也不是那么的好懂,于是就停下来总结下书里面谈到的一些关于科技和禅的问题。

阅读全文 »

JavaScript读书笔记04

引用类型

在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称作是,但其实这跟传统的面向对象的语言是不一样的,它并不支持接口等基本功能。对引用类型更确切的称呼是对象定义,因为它就是在描述一类对象所具有的属性和方法。

阅读全文 »

JavaScript读书笔记03

函数

ECMAScript中函数用关键词function来声明:

function functionName(arg0, arg1){
statements
}
阅读全文 »