文档章节

沉思录:别人的棺材

雅各宾
 雅各宾
发布于 2013/11/28 09:37
字数 556
阅读 82
收藏 0

一个大的软件系统通常包括若干子模块。通常来说,良好的设计具有这样一些特点:
    1.模块功能单纯、明确、不重叠;
    2.模块之间的通讯接口清晰;
    3.模块耦合度较小。

现在有A、B、C...等几个模块,B模块(但不限于B模块)负责生成指令,A模块负责执行指令,两个模块对指令的格式定义了规约。

B模块生成的指令,可能在格式上就是不正确的,也可能格式正确但内容非法,比方说,指令里的某个参数不得超过某个值,否则A若照搬执行,即会造成严重后果。很显然,A模块必须具有严谨的逻辑分析例程,要考虑所有边界条件和异常情况。

现在有人提出一种“更保险的”设计方案:B模块也要实现同样的指令逻辑分析例程。乍一看,似乎颇有些道理,实际上……,唔,你说呢?

道理其实很简单。假如现在C、D、E...等(第三方)模块都要向A模块发送指令呢?更有甚者,假如指令分析的业务规则发生了变动呢?你希望只修改一处逻辑分析例程,还是修改好多处?

类似地,还有一些 不属于技术认识缺陷的例子。

在一个开发团队中,本来是甲的任务,却被乙做掉了,或者甲已经开发过的好端端的模块,乙也要写一个功能类似的“更好的”模块。

不管是乙的自作多情,还是某人打着“团队协作”幌子的无端指派,造成的后果都可能会比B模块执行了一个非法指令所导致的后果,严重得多。

那些来源于生活、听起来滑稽的故事常常使我们感到好笑,以至于忘了自己可能就是笑话中的丑角,或许有些话非得说到极端才能 振聋发聩
把别人家的棺材抬回自己家哭”,说的就是这个道理。

本文转载自:http://blog.csdn.net/optimizer/article/details/14428

共有 人打赏支持
雅各宾
粉丝 9
博文 123
码字总数 52806
作品 0
深圳
技术主管
Android开发技术周报 Issue#151

十月 23, 20170 条评论AndroidDevWeekly 新闻 关注我就能达到大师级水平,这话我终于敢说了 安卓之父的全面屏Essential Phone降价促销:4000元 只能插线当U盘?安卓USB这些神奇用途你知...

脉脉不得语
2017/10/23
0
0
Android开发技术周报 Issue#155

十一月 20, 20170 条评论AndroidDevWeekly 新闻 Google 开发技术周刊 088 期 11月Android占比出炉:上线数月Android 8.0 Oreo占比为0.3% 小容量手机福音:Android 8.1将优化非活跃APP...

脉脉不得语
2017/11/20
0
0
Android开发技术周报 Issue#161

一月 02, 20180 条评论AndroidDevWeekly 新闻 Firebase 控制台更新 宣布在TensorFlow Lite 中支持Core ML 让 Pixel 更适合驾驶员 Android Things Developer Preview 6 教程 小窗播放视...

脉脉不得语
01/02
0
0
笨办法学C语言

继《笨办法学Python》之后,Zed Shaw开始动手写《笨办法学C语言》。 和《笨办法学Python》一样,这本C语言入门书也将采用习题方式引导读者学习。 在序言中,他引用了笛卡尔《第一哲学沉思录》...

小卒过河
2011/07/04
5.2K
16
Redis 深度历险:核心原理与应用实践

内容介绍 Redis 是互联网技术架构在存储系统中使用最为广泛的中间件,它也是中高级后端工程师技术面试中面试官最喜欢问的工程技能之一,特别是那些优秀的、竞争激烈的大型互联网公司(比如 ...

技术小能手
08/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
2
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
3
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部