为什么有人可以在屎一样混乱的几千行代码里加功能？不重构能驾驭屎山吗？
驾驭屎山的唯一方法，不是重构，而是不重构。 为什么有人可以在屎山里加功能？ 很简单：把屎山扒拉开，每块闻一闻，找出和你要改的功能对应的那坨屎，把这坨屎套个塑料袋（封装），你就可以假装塑料袋里不是屎，是巧克力。然后，在旁边拉一泡新的屎，等它风干成型（测试通过）就可以收工了。 当然，怎样优雅地在一座屎山里闪转腾挪，做到“百屎丛中过，片屎不沾身”，还是需要很多经验和技巧的。不过说白了，就算失误了摔个嘴啃屎，臭也只臭你程序员一个，老板还觉得你很狼性，客户还觉得真香。 很多愣头青觉得自己是天才，可以把屎山重构了。他们中的大部分人引发了屎崩，永远埋在了几千米高的屎山之下。 极少数人在泥屎流的洗礼中活了下来，浴屎重生。他们真的做到了，他们真的重构了整座屎山！ 重构之后的那个东西，被后人称为—— 屎山2.0。 当一个系统复杂度增加的时候，它的熵也会增加，这是宇宙规律。而某些有洁癖的码农，他们非要强行降低这个复杂系统的熵——不是做不到，但需要巨大的能量，也就是成本。 你想让谁来付这个成本？老板还是客户？ 屎山不是一天拉成的。每一代屎山的建设者，都是非常聪明的人。他们非常清楚继续堆高屎山，未来将产生的代价。他们理性中立客观地评估了推翻屎山重建的成本，然后做出了一个充满智慧的决定： 在屎山上继续拉屎。 这个决定对于每一个人都是最优解，因为每一个人只需要对他当下的目标负责。每一次“继续拉屎”的决定都是正确的，不这样做才令人匪夷所思。如果重构屎山，客户很生气，因为交付时间更长了，还会冒出许多以前没有的bug。老板很生气，因为成本大增，而客户毫无多付钱的意思。就连重构屎山的人自己也很生气：天天钻在屎山里996，搞得浑身屎味，工资却一分钱没涨。 尿海不择细流，故能成其大；屎山不拒细壤，方能就其高。屎山就这样一天天长大，终于令最后接手的码农感叹：高山仰止，景行行止。 其实，屎山，是任何复杂系统的终极归宿。无论你使用何种语言，师从什么流派，哪怕23种设计模式样样精通，最终还是会踏上前往屎山的道路。因为，条条大路通屎山。 就连微软、谷歌、Oracle这样的大公司，他们的产品也都是屎山。Oracle每改一个功能，全公司的服务器需要全速测试几个月。chromium浏览器的源码有十几个G，虽然是开源的，但没有人敢在如此险峻的屎峰上提交自己微不足道的屎坷垃，高处不胜寒。 至于微软，呵呵……从win8到win11，10年了，控制面板还是有两种口味：一种是古早味的，一种是苹果味的。office从2016到2021，5年了，不拿放大镜都看不出有什么区别。 这段话可能会让你误以为，微软、谷歌都是垃圾。但实际上，他们是地球上最强的软件公司。世界上最高的屎山，都是最聪明的屁股拉出来的。换了一般的程序员，屎山还没垒出一个小屎包，就屎崩了，就这点水平还天天嚷嚷着要重构屎山。 乔布斯曾说：死亡是最好的创新。所有代码的最终归宿都是坟墓，而绝大多数代码早已死无葬身之地。屎山是不可能重构的，这辈子都不可能重构的。打败屎山的唯一方法，唯有另起炉灶，建一座新的屎山。这就是为什么在巨头们巍峨连绵的屎山脚下，总能有新的小屎包崛起。 当然，对于血气方刚的少年，我知道，你很可能觉得我在扯淡，屎山有什么好怕的，重构就是了。 明知山有屎，偏向屎山行。来，壮士，干了这碗屎，我绝不会拦着你。 我只会献上一本秘籍，祝你早日成功： 作为一名有理想的程序猿，我也在努力建造自己的屎山。 我想做一个能直接翻译英文pdf的工具，不是划词翻译那种，而是一次性翻译整个文件，英文pdf进，中文pdf出。这样看论文就可以偷懒了~ 链接如下，感兴趣的同学可以试试。目前只有PC版，APP的坑一直没填： 大中华区Rust语言代言人 @张汉东 老师在试吃之后，只评论了两个字： 神器。 他翻译的pdf是这样的： 说实话，得到这样的评价实在出乎我的意料，因为我还从没试过翻译编程领域的文章，初看貌似效果还行。不过，我在受宠若惊的同时，也暗暗感到惭愧。因为只有我自己知道，屎山里还有多少坑没填…… 不说了，我要进屎山填坑了…… 评论区有人说反对我当年退出文坛，其实我进入文坛也没多久……如果你喜欢我这种用脱口秀style把道理讲通透的风格，可以尝尝我今年出版的两本科普书。这两本书都入选了2021年度CCF“科普阅读推荐图书”榜单。CCF是什么，对于程序员就不需要介绍了吧…… 一本既不吹捧科学家的伟大、也不纠结历史细节、只想让你无废话看懂量子、还吭哧吭哧手绘100多张彩色漫画实验图解的硬核科普： 一本不屑于教Python和调参、只想和你探讨人类命运和智能本质的AI科普： 还有不赚钱、只求交个朋友的套装： 