上一页 1 2 3 4 5 6 7 ··· 34 下一页
摘要: Thoughtworks的Sam Newman在Mythoughtworks的Software Development小组中给出了Evolutionary Architecture的一些资源。其中一个是Martin Fowler与Rebecca Parsons在QCon SF 2009的一次演讲,题目为Agilists and Architects: Allies not Adversarie... 阅读全文
posted @ 2011-10-10 08:05 张逸 阅读(3329) 评论(4) 推荐(1) 编辑
摘要: 处理遗留系统,几乎是每个程序员都不可能绕过的一件麻烦事儿。因为时间压力,技能不足以及功能复杂等诸多原因,常常使得遗留系统的代码变得糟糕混乱,可读性与维护性差,无法保证功能的可测试性,纠缠不清的代码让类、方法之间紧紧耦合在一起。如果遗留系统能够正常工作,那么我们还可以置之不理,即使代码接近腐烂的边缘,我们还可以得过且过。倘若我们需要维护遗留系统,或者需要为它添加新的功能,又或者需要将新的系统与遗... 阅读全文
posted @ 2011-10-09 14:19 张逸 阅读(4651) 评论(8) 推荐(4) 编辑
摘要: 正如本书作者在序言中问到“仅仅是又多了一本设计书吗?”作者相信本书的存在“自有其必要性”,原因在于本书探讨的设计领域是如此的卓尔不群,却又是Java程序员在开发中必须要面对的问题,那就是框架的设计,API的设计。 我自认为对面向对象设计的掌握已经深入骨髓,对设计模式也算得上了然于胸,可在阅读本书时,我才发现自己所知不过是米粒之珠,对象设计原来还有更加广阔的世界。API设计的不同,已经超出了通常的... 阅读全文
posted @ 2011-06-16 16:03 张逸 阅读(2710) 评论(3) 推荐(1) 编辑
摘要: 我始终认为,代码应作为架构的一部分,不如此,不足以表达代码质量的重要性。我知道,这与传统学院派对架构的定义是相悖的。一般认为,架构是描述设计蓝图的宏观过程,然而,敏捷方法的逐步普遍,却慢慢开始颠覆这种事前设计的论调,代码不仅要体现架构的原则与思想,还要通过代码对架构施加影响,甚至利用代码来补充与完善架构。 Yourdon与Constantine认为软件系统的整体成本等于开发成本加维护成本,而后者成... 阅读全文
posted @ 2011-06-16 16:00 张逸 阅读(5628) 评论(6) 推荐(11) 编辑
摘要: 在MMN的宏观视图中,包括了三个过程环节:定义架构概图、架构全局分析以及构建概念模型。这是一个循序渐进的过程,是系统架构整体分析的逐步细化。这个过程的关键是找准架构分析的切入点。这正是定义架构概图所要解决的问题。定义架构概图需要明确架构目标、调查架构资源和分析用例场景。这三个活动可以是并行的,至少彼此之间是相互影响、相互作用的。如下图所示: 虽然这些活动是并行的,但从一开始明确架构目标才是最佳的选... 阅读全文
posted @ 2011-04-18 21:43 张逸 阅读(4266) 评论(5) 推荐(3) 编辑
摘要: 我家小孩最喜欢的一句口头禅就是“都是一样的”。每当他看到两件相似的东西时,就会说“都是一样的”。其实,程序设计也是如此,不管语言的变化有多大,其基本的编程思想和设计本质,都是殊途同归。 最近看了Jonathan Snook的作品《Javascript捷径教程》(英文书名:Accelerated DOM Scripting with Ajax, APIs, and Libraries),他带领读者构... 阅读全文
posted @ 2011-04-17 21:45 张逸 阅读(3517) 评论(14) 推荐(7) 编辑
摘要: MMN(Macro-Micro-Nano,即宏观-微观-纳米)实用架构过程初步体现了我的架构观:即以实用主义态度把握架构原则与本质思想,从系统的各个层次剖析架构,提供一个具有指导意义和实施价值的架构过程,采取简略、敏捷而又全面的方式,对软件系统进行架构与设计。架构的步骤必须是清晰可见,每一步都有明确的目标与实际的指导意义。MMN实用架构过程既有大局观的思考与基本原则指导,又要着眼于细处,突出强调宏观、微观与纳米粒度在架构视图中的合力,既关注宏观的体系架构,又重视层、模块、组件之间的协作方式与公开的接口,同时还极度重视编码质量,并将这种细节的编码风格与重构模式纳入到架构体系中来。对于MMN架构而 阅读全文
posted @ 2011-03-23 09:01 张逸 阅读(3286) 评论(4) 推荐(2) 编辑
摘要: Martin Fowler在其名著《重构》一书,提到了Message Chains坏味道。这种坏味道的表现特征是当调用者需要执行某个功能时,需要调用连续的多个方法,才能最终达成目的。这种调用方法的消息传递就像链条一样,因此Fowler将其命名为Message Chains。 这种坏味道暴露了过多实现细节。它将获得最终结果的整个过程暴露无遗。它不厌其烦地陈述着:首先该获得什么对象,然后再调用返回结... 阅读全文
posted @ 2011-02-27 23:08 张逸 阅读(3879) 评论(13) 推荐(3) 编辑
摘要: 在坏的设计中,数据往往是分散的,甚至是杂乱的,这就好像一群失去意识的猛兽,我们无法控制、协调以及管理它们。这种漫无头绪的散乱数据,犹如猛兽的肆意妄为,会给系统带来无尽的灾难。随着系统的演化,这种灾难会逐渐蔓延至系统的各个角落。因此,在面向对象设计过程中,对数据分类是识别对象的一个前提。但是,仅仅封装了数据的对象,如果没有操作数据的行为,仍旧是没有意识的死亡对象。 我始终认为,对象在拥有自己数据的... 阅读全文
posted @ 2011-02-24 10:07 张逸 阅读(2888) 评论(10) 推荐(4) 编辑
摘要: 程序员面临的最痛苦之事,莫过于修改旧代码;如果还有比这更痛苦的,就是修改糟糕透顶,乱得一团糟的烂代码。最近因为手底下一帮程序员都在忙,市场部正好又反馈过来一个要命的bug,一时手痒,就领下了这个任务。我们这个产品是针对教育行业的,它是在好几年前开发,然后不断完善和维护。这些阶段都是在我来到这家公司之前完成的。所以,我对于产品的代码并不熟悉。 原来的需求是假定客户设置分数段时,不同的分数段有不同的... 阅读全文
posted @ 2011-02-18 09:58 张逸 阅读(5484) 评论(33) 推荐(8) 编辑
上一页 1 2 3 4 5 6 7 ··· 34 下一页