`
- 浏览:
20941 次
- 性别:
- 来自:
上海
-
程序员需要知道的97件事情之 ------- 不要盲目的"reuse"
本人英语抄过4级,奇烂无比,翻译这个实属蛋疼,错误是肯定有的,而且是翻不出出来就是随便猜,欢迎指出,谢谢啦。但愿我能够翻完我看的懂的....
原链接:oreilly的程序员需要知道的97件事http://programmer.97things.oreilly.com/wiki/index.php/Contributions_Appearing_in_the_Book
这是一个经常出现的场景: 这是我在公司的第一个项目,我不仅仅满足于完成任务,我想去证明自己,每天都待到很晚去通读现有的代码,当我完成了我第一个功能的时候,我额外去留意我学习过所有事情,包括注释,日志等。并且尽量抽出公有的代码到共享库里去。在code reiw的时候,让我震惊的是居然遭到了前辈们粗鲁的抛弃 ----
软件工程中奉上神龛的 “重用” 居然被阻止了!!
为什么会发生这样的事情?尽管所有的大学里面重用都是支撑软件工程的核心理念之一,我们的读的文章,前辈们的教导,等等,难道都是错的吗?
其实这正告诉了我们,我们忽略了一些决定性的东西。
比如所处的具体环境 (老土的是具体问题具体分析)。
事实是这样的: 2个完全迥异的模块恰巧有些相同的逻辑,而不是我想象的需要“公有”方法。直到我把相似的逻辑抽出到公有库之前,他们本来是完全独立,彼此不干涉。现在使得他们无法独立,每次需求导致逻辑变更的时候,都需要去考虑对方。那些重用的代码看起来是那么的格格不入。当然。这都是我“重用”“逻辑相似”代码的后果。
那些共享库的“公用代码”束缚住了对方导致设计这部分的需求变更时需要考虑的时候很多,这样也增加了维护成本。以前对于两段独立而相似的逻辑代码,维护起来都只要管好自己就成,但是现在可能导致数量级的维护成本上升。
看起来我减少了整体代码的行数,但是我却增加彼此之间的耦合度。代码所依赖的业务上下文是华丽的分割线---------它们相同逻辑被局部化而没有公有化的原因,可能是他们已经被证明这样更好,或者是他们有些相对的值需要当前上下文决定,等等之类。
当他们的依赖上下文或者约束没有被认真检查,即使reuse让代码看起来很不错,也可以让完全不相关的模块产生千丝万缕的关系!!!
由于这些错误是很隐蔽的,因为他们本身看起来是一个好主意。当然,在一个正确的业务场景下,这些技术很有价值,在错误的条件下,它们带来的价值比开销要大的多。
所以: 当在对业务环境毫无所知的情况准备去抽出部分看似被几个模块公用的代码的时候,我更加关注什么东西是真正共享的!!
记住:一定要确定,什么才是真正公用的!
谨慎的做这些动作,检查你的业务场景,只有完全肯定的情况,再去处理它(reuse)!
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选...
WINDOWS程序员使用指南(三)----OLE_DDEWINDOWS程序员使用指南(三)----OLE_DDE
WINDOWS程序员使用指南(五)----OBJECT WINDOWS库WINDOWS程序员使用指南(五)----OBJECT WINDOWS库
软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---...
软件工程课程设计-----Release.rar --程序员SUMER 软件工程课程设计-----Release.rar --程序员SUMER 软件工程课程设计-----Release.rar --程序员SUMER 软件工程课程设计-----Release.rar --程序员SUMER 软件工程课程...
WINDOWS程序员使用指南(二)----MICROSOFT基本类库WINDOWS程序员使用指南(二)----MICROSOFT基本类库
程序员表白神器你值得拥有-程序员表白神器你值得拥有 程序员表白神器你值得拥有-程序员表白神器你值得拥有 程序员表白神器你值得拥有-程序员表白神器你值得拥有 程序员表白神器你值得拥有-程序员表白神器你值得拥有 ...
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
百战程序员1573题全套1.12版1-812题.rar百战程序员1573题全套1.12版1-812题.rar百战程序员1573题全套1.12版1-812题.rar百战程序员1573题全套1.12版1-812题.rar百战程序员1573题全套1.12版1-812题.rar百战程序员1573...
程序员简历模板10份--蓝色主题 各不相同 程序员简历模板10份--蓝色主题 各不相同 程序员简历模板10份--蓝色主题 各不相同 程序员简历模板10份--蓝色主题 各不相同 程序员简历模板10份--蓝色主题 各不相同 程序员简历...
《JSP程序员成长攻略》-蒙祖强-源代码
百战程序员1573题全套1.12版700-812题.百战程序员1573题全套1.12版700-812题.百战程序员1573题全套1.12版700-812题.百战程序员1573题全套1.12版700-812题.
黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用
【标题】:“程序员简历模版-php-ios-android-web-c++-nodejs-通用程序员简历”揭示了这个压缩包可能包含了一系列针对不同编程语言和技术栈的程序员简历模板。这其中包括PHP、iOS、Android、Web开发以及C++和Node.js...
MicrosoftWin32程序参考大全 函数大全 结构大全 等 Win32程序参考大全(一)——窗口管理和图形设备接口 Win32程序参考大全(二)——系统服务、多媒体、系统...MicrosoftWin32程序员参考大全(五)----消息、结构和宏
网页接口测试工具-Postman Window安装加设置中文压缩包程序员必备工具网页接口测试工具-Postman Window安装加设置中文压缩包程序员必备工具网页接口测试工具-Postman Window安装加设置中文压缩包程序员必备工具网页...
JSP程序员完全成长手册-开发频道-Web开发-天极网.mht
screen-4.0-程序员运维必备-后台运行应用-linux-64-32位.rar 1. 资源内容:后台运行应用screen 可方便管理后台应用,告别 -d ,告别nohup 2. 使用目标:运维,后台运行应用,linux 后台运行 3. 应用场景:部署 和 ...
《C++ Builder程序员成长攻略》-蒙祖强-源代码.part02