你以为大厂的代码就不烂了?烂成一坨屎...

文章探讨了大公司中代码质量低下的一些原因,包括历史遗留问题、复杂的业务逻辑、追求快速迭代和不同技术栈的不统一。开发者可能会接手代码质量参差不齐的项目,导致代码变得臃肿和难以维护。此外,开源项目快速交付的压力也可能导致内部代码质量下降,形成‘代码屎山’。在这样的环境下,改善代码质量往往需要付出额外的努力。

点击“开发者技术前线”,选择“星标🔝”

在看|星标|留言,  真爱

4e5731d5310b7ec52b2562b08d32593e.png

来自:开发者技术前线

作者:可可

最近有一位朋友进入梦寐以求的某大公司,入职没多久就和我抱怨了下,他们公司代码写的也不怎么好,连他一个菜鸡都能看出逻辑漏洞,但却没人改。

让他有点怀疑人生了。那么为什么有的大公司代码也会如此烂呢?

7c71e0db1074121fca6337afafa9629a.png

他发现团队高工的写得代码和开源的代码一对比后,公司的代码写非常臃肿,差距也非常大。甚至好多代码,写的都比较复杂。这哥们告诉我:一个好简单的功能要研究1-2天才能摸清代码怎么改。。最后写一行代码

3f23ab21eaf0c954471ba92f35930bbd.png

为什么大公司代码写的并不好?

ff5b1fda86b4630067569b8bd60ad6e1.png

历史遗留

如果是老的项目,几乎新人一入职不久就接手了,如果之前维护这个项目的人,技术水平比较高,代码行云流水、代码规范,逻辑严谨度都很高,恭喜你,你获取一个学习优秀代码的成长起点。对于你是幸运的,之前接触过这样的项目,真是写的好,巧妙的设计模式,逻辑清晰,和读系统源码一样。但是你没那么幸运,接手一个水平不是很高的团队维护的代码,那你就有事情做了,重新写,还是重构。烂代码跟一坨屎一样,很多时候就是和一坨屎共处千万别深挖,说不定把哪里挖塌了把你埋了,扔一坨代码到屎山上,达到自己目的,能跑就行了,你还要搞清楚山上的屎哪一坨是谁拉的,拉的人吃了什么,就没什么意思了。能在超级大的屎山上扔一坨代码进去,把自己的事干了,也是本事真的,毕竟谁没维护过烂代码。复杂度足够大,都会成为屎山的,什么设计模式都没什么鸟用。这时候可以花时间加班来重写吧,不然你干不下去的,等着你的要么走人。

63857fca9c8e52f6161e8fefdf3e8f1d.png

有一天来个架构师,也只能把垃圾代码装到垃圾箱,但垃圾代码还是垃圾代码。并没有改变。

06bc250a4eaa99c7e93cca7f04d54fe2.png

业务逻辑

业务逻辑复杂,一个系统和N多系统集成,一个业务对象上百个字段和几十种状态,一个流程几十个环节,自己业务依赖他人的,别人写的烂,自己也会被影响,反正写的烂无所谓了。看着别人集成的代码反正也不知道哪里不对劲,代码能跑就行,谁动谁背锅

5be53f85aafd5092286b757c24b40ada.png

然后扔一坨代码到本来的屎山上,那就更烂了。

39f90846183c146a9490317bf1ea288a.png

追求开源

3d49eef120931c861fe162c36583dd62.png

大公司技术团队基本考虑利好招人、技术宣传,一般都会做开源项目,开源项目发起后,基本要在短时间内交付一个可使用的版本,在还没有开源之前。通常项目会在内部团队进行接入实验,因此首先被恶心的就是公司自己内部的团队,项目Bug多,和已有的服务系统不兼容,各种接口适配、包装。最后开源项目对外开源了,但内部业务团队的遗留的接入层没人维护,甚至开源项目对外开源后,造轮子的团队完成KPI后,就抛弃不维护、或者作者已经离职去其他大公司继续造轮子了。

这样造成代码屎山有人堆,没人铲的局面,越来越臭

1deddae07e9be60eecca0dabb5e7e8ac.png

注重效率

大公司对项目要求迭代快,尤其在大公司的孵化项目的初创团队,人员配置不完善,并且高层们为了拿下市场份额,会给业务施加压力。所以要求短时间内版本要上线,这样一来,业务开发就没时间去关注质量,在这边copy,那边copy, 先上线再说,久而久之,后面的自己看到自己写的代码都会恶心死,本想改下?改了能有KPI?算了反正当前程序能跑,懒得改。

36d4d387afc02585469ec4265ffd8f04.png

1e10ad657cabbfdbbaed5e82d7d4d0e9.png

技术栈不统一

大公司技术团队由非常多的业务部门组成,不同部门之间技术栈未必全部统一,每个业务部门一把手为了自己的一亩三分地,害怕自己团队被其他部门吃掉,稳住技术护城河,通常也不愿意接入其他部门开发的轮子,甚至还要自己造轮子后恶意竞争,于是形成了不同部门有自己的技术栈,有的后端用Java, 有的用go。这样一来,在部门间协作时会遇到系统无法互相调用,两边的开发人员又会开始疯狂开发适配层接口,在本来就不怎么好的代码上又打补丁,让这座代码屎山堆地更加高了。一旦某个部门被裁或者合并,这座代码屎山会越来越薰,臭是晕留下的对方部门的技术同事。

最后留言说说你遇到的烂代码,并且它是怎么样的?

— 完 —
点这里👇关注我,记得标星呀~
前线推出学习交流一定要备注:研究/工作方向+地点+学校/公司+昵称(如JAVA+上海
扫码加小编微信,进群和大佬们零距离

END

后台回复“电子书” “资料” 领取一份干货,数百面试手册等

历史推荐

蚂蚁金服开源了一款研发框架!还是增强版的

11 年北漂老码农被卷跑了!他道出了离开的真相!

阿里巴巴常用的12个开发工具

好文点个在看吧!

<think>好的,用户想了解如何避免或重构低质量代码,也就是常说的“代码”。我需要结合之前提供的引用内容来给出建议。首先,引用[1]提到了《代码大全》中的软件构建,强调降低复杂度和提高可读性,这可能涉及到编码规范和设计原则。引用[3]提到了函数式编程如何简化代码,减少冗余,这也是一个关键点。引用[4]展示了一个嵌套的Promise例子,说明当的异步处理可能导致代码混乱,所以重构异步代码的方法应该提到。引用[5]讨论了同编程范式的重构差异,可能需要根据语言特性选择合适的方法。 用户可能需要具体的步骤,比如编码规范、模块化设计、重构技巧等。需要分点回答,结构清晰。还要考虑如何引入测试、文档和团队协作,因为这些也是维护代码质量的重要部分。同时,生成相关问题时要覆盖避免和重构两个方面,可能涉及工具、案例、技术债务处理等。 要注意使用中文,正确应用LaTeX格式,比如在提到复杂度时用$O(n^2)$这样的例子。另外,确保引用标记正确,比如在提到《代码大全》时添加[^1],函数式编程部分引用[^3]等。需要检查是否有遗漏的最佳实践,比如代码审查、持续集成等,但根据现有引用,可能需要深入这些方面,除非引用中有相关内容。过引用[3]提到了可测试性,所以测试部分需要强调。 总结下来,回答应该包括编码规范、模块化、函数式思想、重构方法、测试、文档、技术债务管理等方面,每个部分结合引用内容展开,最后生成相关问题时要覆盖这些方面,帮助用户进一步学习。</think>以下是如何避免和重构低质量代码的系统性解决方案,结合《代码大全》等专业著作的工程实践与函数式编程等现代范式: ### 一、预防"山"的工程实践 1. **编码规范先行** - 强制实施命名规范(如$变量名=动词+名词$) - 限制函数长度(建议<20行)和圈复杂度(推荐$Cyclomatic\ Complexity < 10$) - 使用静态分析工具实时检测代码异味[^1] 2. **模块化设计原则** - 遵循SOLID原则,特别是单一职责原则: $$耦合度(Coupling) \propto \frac{1}{模块独立性}$$ - 采用"微服务+领域驱动设计"架构模式 3. **函数式编程应用** ```python # 传统命令式 vs 函数式 # 命令式(易产生副作用) total = 0 for num in numbers: total += num * 2 # 函数式(引用透明) total = sum(map(lambda x: x*2, numbers)) ``` 通过高阶函数减少状态管理(如Java的Function接口实践[^3]) ### 二、重构技术债务的方法论 1. **增量式重构流程** ``` 原始代码 → 添加测试覆盖 → 提取方法 → 引入设计模式 → 验证功能 ↘ 使用重构工具辅助 ↗ ``` 2. **异步代码优化(针对Promise地狱[^4])** ```javascript // 重构前 a().then(res => { b(res).then(...) }); // 重构后(使用async/await) const resultA = await a(); const resultB = await b(resultA); ``` 3. **模式匹配重构** ```elixir # 使用模式匹配代替条件嵌套[^5] case {x, y} do {:ok, data} -> process(data) {:error, _} -> handle_error() end ``` ### 三、质量保障体系 1. **测试金字塔实践** $$单元测试:集成测试:端到端测试 = 7:2:1$$ 2. **文档驱动开发** - 使用Swagger/OpenAPI规范接口 - 代码即文档(如Python类型提示) 3. **技术债务管理** - 建立债务登记簿 - 设置专项重构迭代(建议占开发资源的20%)
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值