什么是屎山代码?什么是防御性编程?

218 天前
 jjshare
以前说代码不好维护,指的是包依赖、库依赖、版本依赖、环境依赖等。

或者是说初级程序员,经验不够多,考虑问题不够细致,分支考虑不到导致 bug 或漏洞。

现在发现大家把自己看不懂的,就归到别人代码垃圾了。

额,代码只要没有加密、没有混淆、没有故意取一些似是而非容易误解的名字,不都是挺好阅读理解的嘛。以前看过很多源码,NASM 的、C 的、Perl 的、PHP 的、各类框架的,看着看着总能会心一笑,理解人家哪里有疏漏、哪里有意思。

真心不觉得有啥屎山啊。

来位懂的同学给普及一下吧。
826 次点击
所在节点    编程
3 条回复
chuckzhou
218 天前
给你举一个例子吧:
有一个函数,实际有将近 100 个参数,入参的时候,把所有参数用一个特殊符号作为分隔符,拼接成一个字符串作为入参。
函数中再用分隔符拆出所有参数,变量取名就是 num34, string68 这样的。

这种屎山形成的原因是很早以前没有 json 这种东西,传参用一个字符串方便。
后来写代码的人也没时间重构,随着业务变复杂,往后面增加的参数就越来越多。
最早的开发人员用了这种命名,后面的人就跟着用。
当时写的人很清楚自己的变量是什么,但是接手读代码的人就很痛苦了。
尤其是代码量几个 G ,业务巨复杂。。。
starerlloll
217 天前
一个文件 2w 行手写的代码,其中包括多个 sql query 和 JavaScript ,并且这俩是作为 string 存在的。。
thomas15425
217 天前
我公司的屎山代码,一堆没有使用的函数,不用的代码注释了就完事,还有一堆没写完的函数,有时从 0 ,有时从 1 开始的 index 。我接手时上一手离职更久了,又没有文档。现在还能正常维护真佩服当时的自己。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1033342

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX