V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jjshare
V2EX  ›  编程

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

  •  
  •   jjshare · 253 天前 · 855 次点击
    这是一个创建于 253 天前的主题,其中的信息可能已经有所发展或是发生改变。
    以前说代码不好维护,指的是包依赖、库依赖、版本依赖、环境依赖等。

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

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

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

    真心不觉得有啥屎山啊。

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

    这种屎山形成的原因是很早以前没有 json 这种东西,传参用一个字符串方便。
    后来写代码的人也没时间重构,随着业务变复杂,往后面增加的参数就越来越多。
    最早的开发人员用了这种命名,后面的人就跟着用。
    当时写的人很清楚自己的变量是什么,但是接手读代码的人就很痛苦了。
    尤其是代码量几个 G ,业务巨复杂。。。
    starerlloll
        2
    starerlloll  
       253 天前
    一个文件 2w 行手写的代码,其中包括多个 sql query 和 JavaScript ,并且这俩是作为 string 存在的。。
    thomas15425
        3
    thomas15425  
       252 天前
    我公司的屎山代码,一堆没有使用的函数,不用的代码注释了就完事,还有一堆没写完的函数,有时从 0 ,有时从 1 开始的 index 。我接手时上一手离职更久了,又没有文档。现在还能正常维护真佩服当时的自己。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5678 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:06 · PVG 11:06 · LAX 19:06 · JFK 22:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.