惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
腾讯CDC
D
Docker
G
Google Developers Blog
D
DataBreaches.Net
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
The Cloudflare Blog
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
量子位
美团技术团队
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Engineering at Meta
Engineering at Meta
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - Agent

更改VS.NET 默认SCM Provider的方法 关于VS.NET的SCM Plug-in Lippman的宣传 Important Issue About DataReader and DataGrid's Paging 上海照的 cookie的过期时间-- 郁闷又恼火 - Agent - 博客园 可为空的基础类型 Choice 做了一个小型的Dump以便于调试使用 - Agent - 博客园 It's Great VS2005 VS2005 My Assembler 有关JIT 凌晨三点不想睡 不学编程 别搞计算机了 天又要亮了 该死的宏 Uncle bob's View of dynamic and static languages
Bad Smell
Agent · 2004-05-14 · via 博客园 - Agent

对代码的膨胀越来越觉得提心吊胆
看样子可能是某个部分没有做好充分的准备
虽然还没有进入焦油坑,但每步都觉得比以前艰难, 这也许是一个不可能改变的事实。哪怕是使用接受变化的开发方法,也无法在程序复杂性不断提升的同时保证修改难度不变。
一次积极的hacker式开发尝试确实有许多感想。前置设计绝对是必要的,虽然对于自己并不熟悉的领域,采用蠕动式探索(TracerBullet)能取得很多有益的提示。但是对于整体的把握,模块之间的过度分离化会使整个系统的行为难于确定,特别是当大量模块之间需要紧密协作时,在编码与小设计过程中无法预见一些需要大量协作的问题。

若是在

编码 ---测试集成 --- 重构 --- 增量设计
|                                               |
|____________迭代______________|

这样的过程中,不断增长的整个系统会因为系统本身的耦合性在后续设计中产生对以前设计模块的影响。这其实充分说明了整个系统不管设计时将模块做的多么自闭(Self-contained),系统却是一个耦合工作的实体。因此在进行Bottom-Up设计时,应给予模块之间的协作以相当考虑。这点其实就是OOP的精髓---良性耦合。

当然,对于一个object-based系统,比一个乱七八糟的object-oriented系统,要好应付的多。把绳子绑上与解开死结,需要的工作量不属于一个量级。

Rule is to be broken   ---Robert C. Martin