`
avidmouse
  • 浏览: 13926 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

重写的理由

阅读更多

    系统运行一段时间后,总会找到重写的理由,理由大致如下:

  1. 有更新更强大的技术出现;
  2. 代码质量控制不好或原有设计有缺陷,出现了很多坏味道;
  3. 原有开发人员流失,新旧交接不好或新人不喜欢维护他人代码(又有几人愿意维护他人代码呢?);
  4. 政治原因;

    但真的必须重写吗?原有系统真的就那么不堪吗?

 

    话说3年前,还在上家公司,由于公司的不景气,很多同事离职了,服务器端的大部分代码落到了我的手里,当时刚刚被play framework和scala折服,男人的本性总是喜新厌旧的,于是,利用业余时间,用play 1.2 和scala重写了公司的核心业务模块。

    开始只是为了理清原有系统的积累了好几年的逻辑,经过两个月的废寝忘食,终于几乎重写了原有系统,代码量减少到1/10,逻辑更加清晰,架构更加合理。

    于是向外行CTO汇报了该工程的存在,CTO觉得这是自己的英明领导的伟大体现,竟然力挺该工程,测试后,出现了不少兼容性问题,坏就坏在“几乎”两个字上,程序可是爱憎分明,毫不将就的。还好我对原有系统比较熟悉(已接触该项目两年),经过差不多1个月的测试、debug,成功上线。

 

    虽然成功的重写了系统,但其中的辛酸,劳累,其中的风险,还是让人后怕的。这次成功,纯属侥幸,主要是因为:

  1. 业务简单,且我对整个系统比较了解;
  2. 代码量不大;
  3. 时间比较充裕;
所以一切还在可控范围之内,下边的故事,就是彻头彻尾的悲剧了。

 

    因为外行CTO被人发现只是滥竽充数后,新CTO的空降便顺理成章了,所谓一朝天子一朝臣,新CEO重金挖了许多高人,不乏新浪等大公司的墙角;可他们的问题是:对业务不了解;高人自由办法,CTO和新浪sir商量后,决定用PHP在一个月内重写系统,理由如下:

  1. 创业公司都用LAMP;
  2. 新浪就用LAMP;

    于是,我的工作变成了每天宣讲业务,不,是口述业务,然后由专人用叫做PHP的文法书写出来......

    新系统毫无架构可言,毫无模块可言,毫无设计可言,或许所谓高人,便是无招胜有招吧。

    后果可想而知,代码量翻了20倍不止,高人果然适合做大工程,只是迟迟无法上线,据说到现在,该系统也没有上线成功。

 

    这两天本想重写现在的某个系统,回想下这段往事,觉得还是重构比较合适,毕竟没到系统无法承受的地步,如twitter。

    冲动是魔鬼,重写需谨慎!

0
0
分享到:
评论

相关推荐

    Basalt:重写Vinegar,但使用基于作业的系统

    玄武岩重写Vinegar,但使用基于“纤维”的作业系统。 当需要阅读OGL支持时,它将利用Vinegar的一些资产,例如其GL后端的不错的组件(我没有理由要这么做,除非找到很好的互操作性或其他理由)。 主要功能来自组织得...

    10大理由!入行IT为啥建议你首选JAVA

    这意味着你可以编写一次Java代码,然后在不同操作系统和设备上运行,无需针对每个平台进行重写。这种跨平台兼容性对于开发多平台应用程序至关重要。 2. 大量的工作机会 Java是世界范围内最受欢迎的编程语言之一。它...

    重写NSUserDefault

    第二,同1相同的理由,对NSUserDefault我们不能过于频繁地触发文件同步写入的操作,这又为数据的及时更新和同步留下隐患; 第三,NSUserDefault也没有针对大size的数据块专门优化,从NSUserDefault的命名可以看出,...

    openpppg-config-test:重写OpenPPG配置

    您应该使用Doks的九个理由: 安全意识。 开箱即用地在上获得A +分数。 轻松更改默认的安全标题以适合您的需求。 默认为快速。 默认情况下,在上获得100分。 Doks删除未使用CSS,预取链接和延迟加载图像。 SEO...

    Guides:遵循一套编写好的代码的准则

    不要重写现有代码以遵循本指南。 没有正当理由,请勿违反准则。 当您可以说服队友时,一个很好的理由。 语言说明: “避免”表示除非您有充分的理由,否则不要这样做。 “不要”表示没有充分的理由。 “ ...

    高级java笔试题-trusted:10factortobuildtrustedsystem-构建可信系统的10元素

    『因为代码写得烂吧,质量上不去,自然需要找个好的理由来重写应用』。旧的代码不好维护,只是其中的一个理由。现在,加上了新的技术、新的架构,已然变成了两个理由了,也就是一个好的理由。 引子 1:代码到架构的...

    OpenYo:不要依赖像 Yo 这样的专有服务。需要一个免费的 Yo 实现。 (在 Rails 中重写 → https

    成功之际{ " code " : 200 , " result " : " API_TOKEN " }失败时{ " code " : 400 , " result " : "失敗の理由" }送哟用 user_ID 发送 Yo。 POST 请求它有 api_ver、api_token 和 username 参数。 api_ver = 0.1 ...

    Android阶段测试

    1、现有一Andriod项目,目录结构如图 1所示,现有一张用户自定义的.9.png图片,试问应放在哪个文件夹下,并试图给出理由。 (10.0) 正确答案: 应放在drawable中,图片资源可放在drawable或minmap中,虽说minmap...

    programming_guides:编程风格指南

    不要按照本指南重写代码。 不要在没有充分理由的情况下违反指导方针。 当您可以说服队友时,理由就很好。 注意语言: “避免”意味着除非有充分的理由,否则不要这样做。 “不要”意味着永远没有充分的理由。 ...

    Riplus主题,2023全新界面发布,付费资源素材下载查看系统,全新会员系统,注重会员体系分离,一键开启关闭会员系统/单独付费

    全新RiPlus主题发布,采用全新UI框架重写。完全兼容历史版本。建议备份好旧版本主题包和数据库后再升级最新版3.0版本,确保无误。新款升级时,因更新太多,部分主题设置需要重新设置和布局,采用了新的小工具模块化...

    指南:样式编程指南

    不要重写现有代码以遵循本指南。 没有正当理由,请勿违反准则。 当您可以说服队友时,一个很好的理由。语言说明“避免”表示除非有充分的理由,否则不要这样做。 “不要”表示没有充分的理由。 “ Prefer”表示一个...

    中小企业服务器配置-Web服务器.docx

    伴随着自由软件发展的强大动力,我们有理由相信Apache的未来是一片光明的。 在Internet时代,外部主页的发布已经成为树立公司形象的一个重要手段,而内部主页也成为公司管理的主要方式。但是,要想实现这些功能,...

    实验项目C、面向抽象和面向接口编程

    实验项目C、面向抽象和面向接口编程 一、实验目的 ★专题:继承基础和面向抽象编程★ 1、掌握继承的使用。...答:使用了接口来编写数据的读写,并重写接口方法。编写计算机类来模拟移动存储设备数据读写,并

    GeeWeb v2.0.rar

    GeeWeb是一款基于PHP MySQL开发的以完全免费、快速建站、维护简易、安全性高、负载力强、SEO友好等为特点,面向各中小...添加了切换服务器是否支持URL重写功能 5.发布3个主题并使用[蓝调信息]作为默认的安装主题

    精易官方免费模块v3.60版

    2.删除“进程_ID取模块路径“,删除理由和上述一样 1.修复“剪辑板_取文件”的状态错误BUG 感谢 网络注册会员 的提醒,感谢 农夫 的代码 精易模块 V3.57 what’s new:(20131230) 1.删除 "窗口_取位置和大小" ...

    URL Comments-crx插件

    2.0.0.*后端重写并从Heroku转移到Firebase*前端使用材料 - UI组件重写*添加了截图*添加了促销瓷砖*添加图标*添加权限理由*添加了隐私政策 - https://url-comments.com/pages/privacy-policy*添加了服务条款 - ...

    13 Reasons Why Backgrounds & New Tab-crx插件

    我们希望您充分享受推广函数的13个理由,这就是为什么您将在新选项卡页面的布局和选项中注意到重写的原因。这是必需的,所以您可以享受函数的完整快捷方式并更新。嘿,我们只是想说谢谢加入并希望你找到延伸美妙的13...

    detox-php:驯服有问题的文件名。 更难

    在正常情况下,没有充分的理由将UTF-8字符音译为ASCII。 但是,迫切需要替换典型Linux命令行上具有特殊含义的字符。 诸如$ , : , ( ) , [ , ]类的字符或多或少都是有问题的。 要求 作曲家 吉特 php(7.2.5或更...

    GeeWeb 2.0.zip

    4.添加了切换服务器是否支持URL重写功能 5.发布3个主题并使用[蓝调信息]作为默认的安装主题 GeeWeb特点: GeeWeb,给力! 完全免费、快速搭建和简单维护 后台各种权限分配严谨、清晰明了,让不同的管理员...

Global site tag (gtag.js) - Google Analytics