系统运行一段时间后,总会找到重写的理由,理由大致如下:
- 有更新更强大的技术出现;
- 代码质量控制不好或原有设计有缺陷,出现了很多坏味道;
- 原有开发人员流失,新旧交接不好或新人不喜欢维护他人代码(又有几人愿意维护他人代码呢?);
- 政治原因;
但真的必须重写吗?原有系统真的就那么不堪吗?
话说3年前,还在上家公司,由于公司的不景气,很多同事离职了,服务器端的大部分代码落到了我的手里,当时刚刚被play framework和scala折服,男人的本性总是喜新厌旧的,于是,利用业余时间,用play 1.2 和scala重写了公司的核心业务模块。
开始只是为了理清原有系统的积累了好几年的逻辑,经过两个月的废寝忘食,终于几乎重写了原有系统,代码量减少到1/10,逻辑更加清晰,架构更加合理。
于是向外行CTO汇报了该工程的存在,CTO觉得这是自己的英明领导的伟大体现,竟然力挺该工程,测试后,出现了不少兼容性问题,坏就坏在“几乎”两个字上,程序可是爱憎分明,毫不将就的。还好我对原有系统比较熟悉(已接触该项目两年),经过差不多1个月的测试、debug,成功上线。
虽然成功的重写了系统,但其中的辛酸,劳累,其中的风险,还是让人后怕的。这次成功,纯属侥幸,主要是因为:
- 业务简单,且我对整个系统比较了解;
- 代码量不大;
- 时间比较充裕;
因为外行CTO被人发现只是滥竽充数后,新CTO的空降便顺理成章了,所谓一朝天子一朝臣,新CEO重金挖了许多高人,不乏新浪等大公司的墙角;可他们的问题是:对业务不了解;高人自由办法,CTO和新浪sir商量后,决定用PHP在一个月内重写系统,理由如下:
- 创业公司都用LAMP;
- 新浪就用LAMP;
于是,我的工作变成了每天宣讲业务,不,是口述业务,然后由专人用叫做PHP的文法书写出来......
新系统毫无架构可言,毫无模块可言,毫无设计可言,或许所谓高人,便是无招胜有招吧。
后果可想而知,代码量翻了20倍不止,高人果然适合做大工程,只是迟迟无法上线,据说到现在,该系统也没有上线成功。
这两天本想重写现在的某个系统,回想下这段往事,觉得还是重构比较合适,毕竟没到系统无法承受的地步,如twitter。
冲动是魔鬼,重写需谨慎!
相关推荐
在C++编程语言中,`std::string`是标准库中的一个强大且灵活的字符串类。...不过,除非有特殊理由,通常建议优先使用标准库提供的`std::string`,因为它经过了广泛的测试和优化,具有良好的兼容性和性能。
在C++编程语言中,`std::string` 类是...不过,除非有明确的理由,否则不推荐这样做,因为标准库的实现通常经过了大量优化,自定义可能会引入新的bug或降低性能。在进行这样的重写时,一定要谨慎,并进行充分的测试。
因此,除非有正当的理由(如IMEI损坏),否则不建议尝试重写IMEI。 在进行IMEI重写之前,必须了解所有潜在风险,并确保遵循当地法规。如果你不确定如何操作,最好寻求专业人士的帮助,以免对设备造成不可逆的损害。...
《SN Write Tool v2.1504.00:IMEI串号与SN重写详解》 在移动通信设备领域,IMEI(国际移动设备识别码)和SN(序列号)是每台设备独一无二的...在没有充分理由和必要性的前提下,不建议普通用户尝试IMEI和SN的重写。
其他类别的理由包含了更多的特殊情况,例如,由于之前骑车撞倒人而产生的心理阴影(不敢骑车改走路)、意外跌入水沟、中暑晕倒、穿着不适合的鞋子不适合跑步(穿皮鞋)、担心迟到导致的心神不宁会影响工作效果、家庭...
玄武岩重写Vinegar,但使用基于“纤维”的作业系统。 当需要阅读OGL支持时,它将利用Vinegar的一些资产,例如其GL后端的不错的组件(我没有理由要这么做,除非找到很好的互操作性或其他理由)。 主要功能来自组织得...
**正文** `coreutils` 是一个著名的开源项目,它是 GNU Core Utilities 的实现,包含了大量用于基本系统管理、文件处理和...随着 Rust 生态系统的不断发展,我们有理由期待 `coreutils` 在未来会有更多的创新和改进。
第二,同1相同的理由,对NSUserDefault我们不能过于频繁地触发文件同步写入的操作,这又为数据的及时更新和同步留下隐患; 第三,NSUserDefault也没有针对大size的数据块专门优化,从NSUserDefault的命名可以看出,...
您应该使用Doks的九个理由: 安全意识。 开箱即用地在上获得A +分数。 轻松更改默认的安全标题以适合您的需求。 默认为快速。 默认情况下,在上获得100分。 Doks删除未使用CSS,预取链接和延迟加载图像。 SEO...
ISAPI_Rewrite3是一款强大的URL重写工具,由Helicon Tech公司开发,主要用于IIS(Internet Information Services)服务器。它允许网站管理员通过简单的规则集来处理HTTP请求,实现URL美化、动态页面静态化以及SEO...
不要重写现有代码以遵循本指南。 没有正当理由,请勿违反准则。 当您可以说服队友时,一个很好的理由。 语言说明: “避免”表示除非您有充分的理由,否则不要这样做。 “不要”表示没有充分的理由。 “ ...
4. **重写,不断重写**:初稿完成后,需要反复修改和完善,直到论文达到预期的质量标准。重写过程中要注意语言的准确性、逻辑的严密性和论点的清晰度。 #### 三、次要点 - **理解材料**:通过与他人讨论来检验自己...
- 单一职责原则指的是一个类应该只有一个改变的理由。 - 开放封闭原则强调对扩展开放,对修改封闭。 - 里氏替换原则指出子类对象应当能够替换其父类对象。 - 依赖倒置原则要求高层模块不应该依赖于低层模块,二者都...
『因为代码写得烂吧,质量上不去,自然需要找个好的理由来重写应用』。旧的代码不好维护,只是其中的一个理由。现在,加上了新的技术、新的架构,已然变成了两个理由了,也就是一个好的理由。 引子 1:代码到架构的...
成功之际{ " code " : 200 , " result " : " API_TOKEN " }失败时{ " code " : 400 , " result " : "失敗の理由" }送哟用 user_ID 发送 Yo。 POST 请求它有 api_ver、api_token 和 username 参数。 api_ver = 0.1 ...
1、现有一Andriod项目,目录结构如图 1所示,现有一张用户自定义的.9.png图片,试问应放在哪个文件夹下,并试图给出理由。 (10.0) 正确答案: 应放在drawable中,图片资源可放在drawable或minmap中,虽说minmap...
不要按照本指南重写代码。 不要在没有充分理由的情况下违反指导方针。 当您可以说服队友时,理由就很好。 注意语言: “避免”意味着除非有充分的理由,否则不要这样做。 “不要”意味着永远没有充分的理由。 ...
全新RiPlus主题发布,采用全新UI框架重写。完全兼容历史版本。建议备份好旧版本主题包和数据库后再升级最新版3.0版本,确保无误。新款升级时,因更新太多,部分主题设置需要重新设置和布局,采用了新的小工具模块化...
不要重写现有代码以遵循本指南。 没有正当理由,请勿违反准则。 当您可以说服队友时,一个很好的理由。语言说明“避免”表示除非有充分的理由,否则不要这样做。 “不要”表示没有充分的理由。 “ Prefer”表示一个...