首页 文章 精选 留言 我的

精选列表

搜索[需求管理],共10000篇文章
优秀的个人博客,低调大师

大多数重写是工程师为了自我满足,而不是为了业务需求

有个程序员凌晨四点爬起来,连续好几周,把公司一个跑得好好的 CakePHP 应用重写成了 Laravel。没人让他干,他自己想干——因为他"不太懂 CakePHP,看每个文件都觉得不对",而 Laravel 用着顺手。 重写完以后:功能一样,速度一样,用户完全没感觉。 他把这件事写成了一篇博客,发到 HN 上以后,58 个赞,49 条评论,引起了一场关于"重写到底为了谁"的深度讨论。 原帖作者 bbsnly 的自我检讨很坦诚:"我当时对 CakePHP 几乎一窍不通,所以看哪都不顺眼。我爱用 Laravel,所以我想用 Laravel 重写。结果是零业务收益。"但他可能没想到的是,评论区并没有一边倒地支持他的结论。 点赞最高的一条评论来自 Twey。他说了一句不好翻译但很精准的话:"一个资深工程师很大一部分(且越来越大的)价值,就是他的 taste。"有时候工程师没法完全说清楚为什么现有代码不对——他们是在用自己见过的大量失败案例做模式匹配。这种直觉不应该被简单地归类为"技术偏好"。 但这个观点立刻被反驳了。jghn 说:"只有在工程师的激励和业务激励对齐的时候才成立。但事实远非总是如此。"dude250711 补了一刀:做重写的人经常"用它来美化简历,然后跳槽走人,让别人收拾残局。" 如果说原帖作者的自我批评太温和,那 malux85 就是另一个极端。他的立场是:拒绝学习现有技术栈是"强烈的负面信号",足以成为开除的理由——"大规模重构的第一步,是理解并胜任现有系统。" 但最有信息量的讨论,来自那些试图把"重写"这个词拆开的人。 dkarl 做了一个关键区分:重写(rewrite)和重新架构(re-architecture)是两回事。很多时候"现有系统可以继续做它该做的事,只是架构环境发生了变化",或者"90% 的代码可以不变",只改应用容器的部分。他还指出了一个常见的陷阱:声称需要重写的人,往往只是"拒绝去学现有的语言、框架或持久化技术"。atq2119 引用了 Kent Beck 的名言:"先把改动变简单,再做这个改动。" 评论区大约有四分之一的人不同意原帖的前提。darth_avocado 指出,大多数重写不是从"我不喜欢这个框架"开始的,而是从"缺少功能、框架过时、维护困难、成本问题、扩展性瓶颈、合规要求"开始的——这些都是服务于业务的。 argee 是亚马逊的早期员工。他回忆说,亚马逊的渲染引擎被重写了三次,"每次都解锁了新的生产力层级。没有这些重写,网站会慢到爬不动,公司大概率已经死了。"但他的同事 cadamsdotcom 补充了一个关键前提:亚马逊有强大的端到端测试套件,"有这个,你可以随意重构和重写。" 也有人对原帖作者的遭遇感同身受。mcv 说:"我以前总假设前辈比我懂。后来发现,我错了很多次。"dijksterhuis 给了一个案例:他接手了一个系统,前任团队留下了"遍地 bug、竞态条件、前端崩溃、数据丢失、自研的安全方案",结论是"他们真的搞砸了。"他给这场讨论贡献了最精辟的一句总结:"好的重写是好的,坏的重写是坏的。你只有在开始以后,才知道自己做的是哪一种。" watwut 给出了全场最让人会心一笑的评论:"如果你凌晨四点就起来干这个,到第二天你就已经睡眠不足了,所以没法阻止自己干蠢事。" 49 条评论,没有得出一个简单的答案。但有一些共识浮现了出来:不懂现有系统就别谈重写;区分 rewrite 和 re-architecture 很重要;有测试套件是重构的前提。以及,如果你凌晨四点爬起来改代码而没有人要求你这么干,至少问自己一句:我到底是在帮助公司,还是在满足自己。 参考来源: https://news.ycombinator.com/item?id=48750934 https://anatoliybabushka.com/blog/when-to-rewrite-working-code.html

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册