曾以为懂的基础

标签: 基础 | 发表时间:2011-01-25 23:25 | 作者:dreamhead 10JQKA
出处:http://dreamhead.blogbus.com

徐昊 被拉了过来,没别的说,压榨,于是,两天都在让他给大家上课。

培训的内容之一是OO训练营,这是ThoughtWorks内部的一个传统培训项目,我也曾做过讲师。之前的训练营,更多的是为了介绍一些基础的概念,比如面向对象,比如设计模式。这个训练营是改造过的,面向的主要是ThoughtWorks内部员工,这些人都有基本的概念,所以,侧重点要调整一下。

确实,当侧重点一调整,问题就暴露出来了。参加这次培训的多是一些毕业生或是加入公司时间不长的同事,之前都看过不少书,这次训练营在一些他们以为懂了的地方给了他们下马威。

  • 封装

面向对象最基本的特征是封装,说起来,大家都明白。真的懂了吗?代码写出来就是一大堆getter,内部细节换了个面孔全都暴露出来了。许多设计原则都是与封装紧密相关,比如SRP,比如OCP。封装不好也是一种坏味道,可以指导着我们向着好代码前进。我承认,识别封装的坏味道比识别重复要求高。

  • 重构

重构不是老马的书,不是IDE上的菜单。重构需要不破坏测试的小步前进。说到重构,其实,很多人脑子里想的是重写。一对pair中死在了在“重构”的路上:时间到,他们的代码没有到达“重构”的终点,又退不回来。于是,接下来的演示,徐昊重构了他们的代码,每一步都很小,不会进退两难。他的演示让我看到,有时我的步子还不够小。

  • 划分任务

TDD简单得令人发指,红——绿——重构。但这真的就是TDD的全部了吗?这只是形。知道了TDD节奏,却依然下不了手的,大有人在。解决问题的方案,说白了,就是拆。把需求拆解成更小的任务,何愁无解。多大的任务算小,可以测试。把问题分解成小任务,才会能做到心里有数,才不会让“剩余的10%”和“前面的90%”用同样甚至更多的时间完成。大事化小是需要能力的,这是很多人过不了TDD这关的真正原因。只是,大多数人连划分任务的习惯都没有。

  • 模式

模式俨然已是大路货,不知道模式都不好意思和人打招呼。但什么时候使用模式却不见得人人知晓。现实问题和书上总有差异,当问题摆在面前,狼烟四起的坏味道告诉我们,许多人对此视而不见。有时,嗅觉,比招式更重要。

因为有先发优势,徐昊在训练营里讲的大多数东西,我是心里有数的。在别人忙着用左脑思考的时候,我在用右脑做着综合,思路得到了一次清理,也看到自己在日常工作中还有许多能够提高的细节。

被培训可比培训感觉好多了。

相关 [基础] 推荐:

HTTP基础

- - ITeye博客
HTTP的结构主要包括下面几个要点:. HTTP的版本主要有1.0,1.1 和更高版本.    1.1 及以上版本允许在一个TCP连接上传送多个HTTP协议,1.0能 .    1.1 及以上版本多个请求和响应可以重叠,1.0不能.    1.1 增加了很多的请求头和响应头.     一个请求行,若干小心头,以及实体内容,其中的一些消息头和实体内容是可选的,消息头和实体内容需要空行隔开.

Git基础

- Wolf - 潘魏增
上个月末在公司内部作了一次《Git基础》的主题分享. 这里把分享内容公布出来,希望对一些朋友有用. 如果之前没有接触过Git,wikipedia上面已经有非常好的介绍. pdf格式:http://panweizeng.com/download/git-basics-meituan.pdf. keynote格式:http://panweizeng.com/download/git-basics-meituan.key.

JavaScript 基础

- - CSDN博客推荐文章
JavaScript可以出现在HTML的任意地方,甚至在之前插入也不成问题,使用标签. 不过要在框架网页中插入的话,就一定要在之前插入,否则不会运行. JavaScript对数据类型要求不严格,一般来说,声明变量的时候不需要声明类型,而且就算声明了类型,在使用过程中也可以给变量赋予其他类型的值,声明变量使用var关键字.

CSS基础

- - CSDN博客Web前端推荐文章
1、引入CSS的四种方式. 行内样式、内嵌样式、链接样式、导入样式. 基本选择器:标签选择器,ID选择器,类选择器,通用选择器. 通用选择器:*{css代码}. 通用选择器作用:对整个网页中所有HTML标签进行样式定义. 常见用法:定义*{margin:0;padding:0}通用样式,并置于CSS文件最顶端,用于对HTML内所有的标签进行重置以保证页面能兼容多种浏览器.

友情的基础

- okici - 比特客栈的文艺复兴
央视对百度的炮轰持续数日后突然停歇,让人揣测百度公关是不是已经与央视签好了互不侵犯协议. 有网友把cntv.baidu.com与baidu.cntv.cn两个域名翻出来奉为定情信物,只可惜它们都是过时的信号. “百度台”与其域名已经存在很久,是Google没叫板之前两家公司的蜜月记忆,早就流失于骂战的口水中.

css基础入门

- - CSDN博客推荐文章
css是Cascading Style Sheets的缩写,是一种用于为Html文档定义布局的样式表语言. Css是一种样式表语言,用于为html定义布局. Css弥补了Html对标记属性控制的不足. Css将网页内容与样式实现分离,使得网页设计更加明了、简洁. Css可以精确控制网页布局,如行间距、字间距、段落缩进和图片定位等.

java基础知识

- - CSDN博客互联网推荐文章
JAVA相关基础知识. 1、面向对象的特征有哪些方面. 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面. 抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节. 抽象包括两个方面,一是过程抽象,二是数据抽象. 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.

CSS基础学习

- - CSDN博客推荐文章
1.    CSS基础介绍:. (1)      CSS的作用:兼容、实现了将页面内容与页面表现相分离. (2)      当文档中的某一元素被多处样式定义时,究竟会使用那个样式呢.                 内联样式--->内部样式表--->外部样式表--->浏览器缺省设置. 2.    CSS基础语法与高级语法:.

Elasticsearch基础教程

- - 开源软件 - ITeye博客
转自:http://blog.csdn.net/cnweike/article/details/33736429.     Elasticsearch有几个核心概念. 从一开始理解这些概念会对整个学习过程有莫大的帮助.     接近实时(NRT).         Elasticsearch是一个接近实时的搜索平台.