摘要:
读了InfoQ中国的一篇新闻,题目为《代码永远是罪魁祸首吗》,有些想法不吐不快。代码质量一直是我较为关注的一个话题。我在许多场合提到过这一点,也就此写过博客来阐述我的观点。例如,在2010年5月InfoQ《架构师》篇首语——不积跬步无以至千里中,我写到: 架构师的成长漫长而充满艰辛。是否能够成功,除了需要远大的目标,还需要脚踏实地。最近,我阅读了两本好书。一本是Kent Beck所著的《实现模式》... 阅读全文
摘要:
《重构之美》之四 在开发框架时,若要支持扩展性,引入工厂方法或许会成为神来之笔。例如,在QueryWrapper类的addResource()方法中,需要创建一个IndexWriter对象。 public class QueryWrapper { public final void addResource(RequestContext context) { log(”A... 阅读全文
摘要:
我在成都Web开发大会与中国软件技术大会上皆以此题做了演讲。在这个演讲中,我提出了MMN架构的命题。MMN架构即宏观架构、微观架构与纳米架构。我在演讲中探讨了MMN架构在原则、模式与方法学的体现。我试图提出一个好的架构过程,将各种方法学、原则与模式糅合在这个架构体系中。 然而,这个命题还很粗糙。因为我还缺乏足够的理论基础与架构经验来支撑。但无疑,这个框架已经搭建起来了。正如软件系统开发需要架构一... 阅读全文
摘要:
《重构之美》之三 我曾经在一次演讲中,问过听众这样一个问题:“一个方法的理想行数最多不超过多少行?”如果问一千个人,或许会有一千条答案吧。 这是一个见仁见智的问题。在《软件开发沉思录》一书中,ThoughtWorks的技术负责人Jeff Bay认为:“一个常见的原则是将方法的行数控制在5行之内……”很多人对此感到不可思议。窃以为,关键不在于方法的最大行数,而是要合理理解方法的微粒度能为我们带... 阅读全文
摘要:
《重构之美》之二 我在阅读遗留代码时,经常发现存在这样一种情形。在一个类中存在两个方法,它们做了相似的工作,区别仅在于方法内部某些对象的类型。例如: public class WorkSheet{ public void fillHeader() { Header header = createHeader(); for (String title:header.getTitles()) { fi... 阅读全文
摘要:
2010成都Web开发技术大会将在2010年12月5日在成都沙湾国际会展中心召开。Active Network的组织者是我在四川大学的同学,所以邀请我到会进行一次演讲。 本次大会的背景:2009年11月,由Active Network中国区执行总监Jean Su女士和淘宝网技术副总裁王文彬博士共同发起的,首届Web开发研讨会,在中国西安成功举行。在这届大会上,来自西安Web开发领域的100多位W... 阅读全文
摘要:
《重构之美》之一 在开发过程中,当你发现代码可以Copy-paste时,就意味着代码出现了重复。这是一种典型的反模式。William J.Brown等在著作AntiPatterns-Refactoring Software,Architecture, and Projects in Crisis(即《反模式——危机中软件、架构和项目的重构》)中认为这种形式的复用让开发的代码... 阅读全文
摘要:
关于代码的重构,已经是老调常弹。自Martin Fowler《重构》一书横空出世,到如今已有十年光景,对于重构,许多程序员已经耳熟能详。然而,每当我们面对项目压力时,常常会将重构置之脑后,抛到九霄云外。理由足够充分,言之凿凿:功能还未完成,何谈重构?究其原因,是因为我们还未将重构当做习惯。即便现在的许多IDE已经支持自动完成常见的重构手法,我们仍然会忘记,仍然会忽略。只因重构不能直接产生价值,只因... 阅读全文
摘要:
金旭亮著作《.NET 4.0面向对象编程漫谈》推荐序 .NET技术浩如烟海,没有任何一本书可以穷尽它,因为作为一个主流开发平台,它涵盖的内容实在太丰富了。然而,当我阅读完金旭亮先生的这本著作(《基础篇》+《应用篇》),我开始对我的论断产生了怀疑。不错,本书依旧没有能够穷尽.NET,然而它在技术广度与深度的结合方面,或许称得上是无与伦比的。可以说,.NET平台的各项重要技术,包括.NET 4.0的新... 阅读全文