代码改变世界

卓有成效的程序员之笔记与实践

2009-06-15 15:50  敏捷的水  阅读(4350)  评论(13编辑  收藏  举报

本文作者:王德水 http://www.cnblogs.com/cnblogsfans, 转载请保留此处声明。

image

一、加速法则

加速法则,就是能加快我们工作的一切的东西。

a. 删除启动面板多余的东西,一个应用程序列表的有用程度与它的长度成反比

下面我以win7为例,把All Program里常用的程序放到Start Menu里,移除Start Menu里没用的程序。

image  image

b. 把常用的程序和目录放到任务栏和桌面,下面是我的工作台。

image

c、使用应用程序加载器

十款好用的Windows Launcher

image

d. 首选键盘,记住常用的 Win+E, Win+R,Alt+Tab等等快捷键,少用鼠标。

e. 使用多重剪贴板,减少来回切换的时间。

f. 记住历史操作。Linux下可以敲入History,但Windows下只能上下箭头。

g,开发加速器, 记住IDE快捷键可以大大提高开发速度。vsts有很多快捷键,请记住常用的。

 

二、专注法则

工作当中,专注可以很大的提高工作效率。

a. 排除干扰,隔离(带耳机)。

b. 关掉不必要的提示(更新呀,等等)。

c. 创造安静时间.

d. 搜索优于导航,使用有根试图.

image

e. 使用基于项目的快捷方式,多显示器,虚拟桌面

    把项目的常用文件放置一个地方。使用虚拟桌面来分类。windows下有vitual desktop.

三、自动化法则

a. 不要重复发明轮子,SubVersion, CruisinControl, Trac, Mingle.

下面是我的项目的自动集成,可以参考我的系列教程 .NET环境下每日集成

image

b. 建立本地缓存。

c. 使用RSS订阅我们需要的信息。

d. 构建之外使用Ant,可以为我们执行一些常用的任务。

e. 用Rake执行常见任务,这个是Ruby下的,我的博客里有一些Ruby的入门文章一步一步学Ruby

f. 用Selenium浏览网页,我的博客里有点Selenium的教程http://www.cnblogs.com/cnblogsfans/archive/2008/12/23/1360320.html

h. 作者推荐使用Powershell,这个我目前还不会。读者可以自己去查相关资料。

四、规范性法则

规范很重要,这个可以减少不一致

  • 使用版本控制。
  • 使用标准的构建服务器。
  •  文中作者提到利用虚拟平台备份每个项目的交付时的环境,这个很不错。
  • 数据迁移,Ruby on rails里的Migration做的很不错,我们可以拿来使用,对数据可以做到很好的版本控制。
  • 保持活的文档,过时的文档比没有文档更糟.
  • 白板+数码相机强过任何CASE工具。
  • 尽量自动生成所有技术文档。
  • 数据库结构 SchemaSpy可以生成数据关系图。
  • 减少重复,重复是软件开发中最大的阻力。

五、测试驱动开发

测试代表着软件开发行为中工程式的严谨部分。他可以帮你养成更好的对代码的“消费意识”,减少调试时间和副作用。

这里记录了我的一些TDD实践 http://www.cnblogs.com/cnblogsfans/category/167592.html

六、公民责任

每一个开发人员都是一个“公民”,我们要尽到公民的责任。

七、注释重构成方法。

这个观点很新颖,我非常赞同。

八、勿过度开发

YAGNI(“You Ain’t Gonna Need it”)你不会需要它,如无必要,勿增复杂度。

九、软件开发首先是一场沟通博弈。

沟通,沟通,再沟通。

十、致力本质复杂度,去除附属复杂度。

这点,我觉得对架构师很重要。

十一、高内聚,低耦合

  • 在调用方法时,不要出现一个以上的. , homer.getJob().setPosition(“Jantior”) 。
  • 把所有的实现细节封装在公共方法之外。

十二、关注古老的软件学说

旧的语言和软件学说,有时很有用,因为我们在继承时,可能丢了很多好的“传统”。看看《人月神话》吧,看看SmallTalk吧,也许你有不一样的收获。

十三、质疑权威

要有质疑权威的精神,不要成为一群《愤怒的猴子》。这个主要是讲一群猴子想吃房子里的香蕉,当它们每次爬上梯子时,主人就用冰水泼它,后来来了一只新的猴子A,当A爬上梯子时,房子里的其它猴子都打他,最后房子里全部都是没有被泼过冷水的猴子,但是还是没有猴子敢去拿香蕉了,因为都是一群愤怒的猴子。

十四、多语言编程

关注多语言编程,每个语言都有自己的特长,比如Erang适合并发程序,Ruby on Rails适合Web开发,让它们专注与自己的特长,今天的平台,明天的语言。