Refactor?or Patching?

郑昀 20090925

1、

几十年前,一帮钻研国外开源代码、研究过各个国家杰出软件工程理论的程序员们,产生了建立一个自主架构的愿望。

这些人有的在外企底层做过coding或者打杂,其中一位若干年后成为了 company 的首席架构师。一些人目睹了另一个庞大软件王国的四处扩张,威慑天下,心向往之并奉为圭臬,劝说其他人沿袭那个帝国的架构和思想,殊不知那个远古时代骨子里就流着邪恶之血的帝国也早已病入膏肓。更多人还是土狼,在国内红海中历经磨砺,几乎每个人都是人中之龙。

这样一群人聚集起来,在几十年前定下来了一个大架构,并设定了一个非常宏伟的 Vision,但这原本是一位圣贤为他的国度应付几百万独立访问者设定的,又如何能像古代的那些帝国开创者一样定为“祖宗之法不可变”呢?

2、

庞大的工程就这么建立了起来,它确实让 company 获益,创造了世人瞩目的诸多成就,顶住了巨大的以亿计的流量冲击。可人们都知道它隐隐有一个硬伤,没有太多实践经验的那群程序员,虽然早已学习过很多优秀的、行之有效的设计模式,但不知为什么却没有贯彻到他们亲手打造的工程里。

他们留下了太多生硬的接口,工作流多如牛毛,但指导它们运转的原则却不那么清晰,甚至蹩脚。随着时间的流逝,在这些接口上衍生出了太多的应用,有太多的新程序员在这些接口和服务上继续开发,并尝试升级系统,但就像多数工程一样,在一个跑了几十年的生产系统上,要让系统继续不间断地应付与日俱增的访问量,你只能零敲碎打修修补补。

无数新程序员学习这个系统的代码时,都呼吁“重构”“敏捷”。但项目总监、产品总监、运营总监们知道,“重构”谈何容易,谁能承受为了升级而暂停服务?谁能承担重构失败的责任?没有测试环境,只有生产环境,你怎么保证你的重构是正确的。

在原有系统上挂接的各个运营单位要在每一次系统小升级中分一杯羹,在每一个小补丁上都要嵌入自己的推广代码,所以也都不愿意自己被砍掉。

你有什么好办法?

郑昀 20090925 北京报道

时间: 2024-10-27 08:38:33

Refactor?or Patching?的相关文章

用refactor pro 改名时,老是死机,有替换的软件吗?

问题描述 在用dotnetnuke增加新module时,新加入的namespace是namespaceYourCompany.Modules.modulename想把YourCompany改成公司的名字.装了DevExpress的Refactorpro和coderush试用版2.5,没破解.然后在YourCompany上点,鼠标右键Refactor-->rename整个网站,就是新装的一个dotnetnuke,包括编译的dll,图标什么的,一共22M,这个rename居然跑了1半小时,然后跳初一

紧急提问,看不懂一个需求,关于C#下refactor的,着急,在线等

问题描述 有这样一个需求,关于refactor的,请哪位朋友方便的话,告诉我程序到底要我做什么吗?谢谢StageObjective:LearnthemeaningofRefactoringcode.Learnthatmethodsthatreturnvaluescanbepassedthemselvesasargumenttoothermethods.•RefactorthefollowingcodetoeliminatetheuseofthetwoidentifierspricePerSqMe

【爱心奉送】VS.NET 最佳开发辅助工具 CodeRush & Refactor Pro

问题描述 DeveloperExpress的CodeRushforVisualStudio.NET为MSVS.NET编程开发的辅助插件工具,它许多十分有用的智能化工具可大大地提高你编程的效率:帮你快速找到你想要到的地方,性能扩展的剪贴板工具,常用程序模板的使用,变量名等的提示和自动输入,等等.DeveloperExpress的RefactorPro是为VS.net编程开发的一套组件,这是一个代码重构工具,能在不改变结果的情况下,使算法更简易,快捷.在不改变代码原始执行结果的情况下对原有代码进行小

Oracle 11g 新特性 -- Online Patching (Hot Patching 热补丁)说明

Oracle 11g 新特性 -- Online Patching (Hot Patching 热补丁)说明 一.官网说明 MOS 的文档:RDBMSOnline Patching Aka Hot Patching [ID 761111.1] 有说明.这里取部分内容.   A regular RDBMSpatch is comprised of one or more object (.o) files and/or libraries (.afiles). Installing a regul

SUSE发布SUSE Linux Enterprise Live Patching

在SUSECon2014大会上,SUSE宣布开始发售SUSE Linux Enterprise Live Patching,让Linux企业用户无需重启即可为系统打补丁,有助于减少宕机成本,增加服务可用性.SUSE Linux Enterprise Live Patching基于kGraft项目,可提供程序包流在不中断运行的情况下实现内核更新.现在可通过订阅为x86_64服务器提供SUSE Linux Enterprise Live Patching,基于SUSE Linux Enterpris

Register and Vote for refactor feature for VS2008 now!

问题描述 Let'sdosomethingtomakeC/C++developers'lifeease.RegisterandVoteforrefactorfeatureforVS2008now! 解决方案 解决方案二:why?解决方案三:....解决方案四:什么东西解决方案五:来到VC一定要顶一把!解决方案六:up解决方案七:DevExpress有免费的RefactorforC++.不过功能有限.C++的重构本来就比其他语言麻烦,而且能够用C++来做OOP的东西现在很多都该由C#等作了,所以估

[LeetCode] Patching Array

Given a sorted positive integer array nums and an integer n, add/patch elements to the array such that any number in range [1, n] inclusive can be formed by the sum of some elements in the array. Return the minimum number of patches required. Example

activiti中的bug列表

分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) Bug [ACT-1968] - Custom Database schema on PostgreSQL not working [ACT-4113] - REST Task API Not working: /service/runtime/tasks?assigneeLike=XX and service/runtime/tasks?ownerLike=YY

git 基于发布分支的开发

创建发布分支: (1) 软件hello-world的1.0发布版本库中有一个里程相对应. /home/jackluo/workspace/user1/workspace/hello-worldgit tag -n1 -l v* (2)基于里程v1.0创建发布布hello-1.x.    注:使用了git checkout 命令创建分支,最后一个参数v1.0是新分支 hello-1.x创建的基准点,如果没有里程,使用提交ID也是一样 [root@localhost hello-world]# gi