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

我至今仍感到羞愧的代码

  •  
  •   d0x0b · 150 天前 · 6864 次点击
    这是一个创建于 150 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近看到一篇文章写的是为自己写的代码感到羞愧,原文如下: https://www.freecodecamp.org/news/the-code-im-still-ashamed-of-e4c021dff55e/ 红迪讨论: https://www.reddit.com/r/programming/comments/5d56fo/the_code_im_still_ashamed_of/ 好奇大伙写过哪些自认为感到羞愧/恶心/骄傲的代码?一些大学食堂给每月低消费同学补贴这种算良心代码吗?

    36 条回复    2024-07-07 19:00:00 +08:00
    Mithril
        1
    Mithril  
       150 天前   ❤️ 1
    我给开源项目贡献的代码都觉得挺骄傲的。

    至于说羞愧或者恶心的代码。。最开始学编程的时候写过一些比较流氓的 App ,比如启动直接最顶层显示最大化窗口,循环显示某些冷笑话且不能关闭的这种。虽然算不上病毒,但放到 U 盘自动启动里,然后把 U 盘借出去了。。。
    lloovve
        2
    lloovve  
       150 天前 via iPhone   ❤️ 2
    Hello word
    Qcchen
        3
    Qcchen  
       150 天前   ❤️ 9
    这是谁写的屎代码!
    Git 追朔下...
    嗯? 竟然是我!...
    luzemin
        4
    luzemin  
       150 天前
    面试的时候问
    atwoodSoInterest
        5
    atwoodSoInterest  
       150 天前   ❤️ 1
    var reslut = httpclient.Get("XXX")
    lp4298707
        6
    lp4298707  
       150 天前
    @atwoodSoInterest 这代码没看出哪里有问题啊,难道是拼写不正确?
    dolorain
        7
    dolorain  
       150 天前
    我以为进来是看代码片段的,谁知道是段子。
    uiosun
        8
    uiosun  
       150 天前
    @lp4298707 result

    这是个单词啊哈哈哈哈,就没觉得不对吗
    fruitmonster
        9
    fruitmonster  
       150 天前
    工作的时候,同组一哥们建表的时候给我整了个 varchar(0),我查了好久
    bunny189
        10
    bunny189  
       150 天前 via iPhone   ❤️ 2
    mingtdlb
        11
    mingtdlb  
       150 天前
    我们不能站在现在的角度去批判曾经的自己,,哈哈哈
    bojackhorseman
        12
    bojackhorseman  
       150 天前
    @lp4298707 re, slut
    tsem1n
        13
    tsem1n  
       150 天前
    @bunny189 这..这也编译不了啊
    sayitagain
        14
    sayitagain  
       150 天前
    恶臭 $string;
    kuanat
        15
    kuanat  
       149 天前   ❤️ 5
    大概十多年前约 2013 年前后,我写过很多用于设备追踪和用户识别相关的代码,那个时候收集用户隐私几乎是稀松平常的存在。现在相关的技术一般叫做指纹。

    如果现在让我评价,我认为这些代码属于作恶性质的。丝毫没有对用户隐私的尊重,收集的信息数据最终都变成了商品。我有的时候会宽慰自己,即使我不做也有别人去做。这么说确实没错,但是放到十多年后的今天,别人可能只会抱怨环境恶劣,而作为曾经参与其中并推波助澜的一员,我会有种非常微妙的感受,就是恶心别人到头来终究恶心到了自己。

    我个人认为在当时我这里“研发”的一些技术属于思想和实现都比较领先的,甚至有些技术在十年后依旧被广泛应用。

    随便举个例子,当时大概是 iOS 7 的样子,我这里就在使用 url scheme 去判断用户安装了哪些应用。当然系统是不会提供这样的 api 接口了,让应用可以直接查询到哪些 url scheme 被注册。于是我就把当时软件商店按下载量拉回来主流应用并解包,获得相关的 url scheme 。通过这样的方式,可以在静默的状态下获得已知应用(有注册 url scheme )列表中应用的安装状态。一两年之后,iOS 才对访问 url scheme 的行为增加 UI 提示。

    这个方法看起来很粗糙,但是它的思想是很深刻的,实际上行业内普遍应用都是好几年之后的事情了。甚至同样的技术手段,三年前还在用于桌面浏览器的指纹识别,桌面浏览器封堵相关漏洞也是很晚的事情。

    说它粗糙是因为在十多年前,使用 url scheme 的应用数量有限,即便如此,十个应用即可获得 10bit 信息,16bit 就足够识别 65536 个用户了,这在当时已经超过了大多数用广告 sdk 的客户的用户数量。(实际的有效信息量会有损失,因为像微信支付宝这样的国民应用基本不具有可辨识度)

    说它深刻是因为现如今所有的指纹技术,核心思想都是通过多渠道手段,采集在统计意义上独立的特征信息,大概 32bit 在实际应用中足够非常精准的识别了。当然现如今 app 根本不用这么麻烦,因为它们几乎都是随意采集。
    reoah2
        16
    reoah2  
       149 天前
    在读研的时候,做了个项目是和公安合作,拿他们的摄像头数据训练实时人脸识别,说是对登记的嫌犯进行追捕,后面也不知道到底用没用上
    foolvino
        17
    foolvino  
       149 天前   ❤️ 1
    @reoah2 现在所有地铁的安检门都有这东西,也确实抓到过
    foolvino
        18
    foolvino  
       149 天前
    @foolvino 更正下。不只是安检门,应该是所有地铁里的摄像头
    reoah2
        19
    reoah2  
       149 天前
    @foolvino 突然感觉变得很欣慰了
    gp0119
        20
    gp0119  
       149 天前
    return 'xxx' === 'yyy' ? true : false
    yuhuai
        21
    yuhuai  
       149 天前
    羞愧的代码肯定是设计错误难于重构的,typo 这种,开源项目一搜 git log 能有一堆的 fix ,大家都忙起来的时候忽略是很正常的
    yuhuai
        22
    yuhuai  
       149 天前
    大多数情况下,错误命名,无效三元这种东西,ide 都可以帮忙批量纠正了
    dingdangnao
        23
    dingdangnao  
       149 天前
    let that = this
    我感觉我自己写的代码都挺烂的😂能凑合用就行了
    毕竟我也不是程序员
    Richared
        24
    Richared  
       149 天前
    @atwoodSoInterest 我居然忘了 result 是不是这么写了。
    yuhuai
        25
    yuhuai  
       149 天前
    我的几段恶心的代码都来自于我的懒惰,两个都是因为场景尚不复杂
    第一个案例是,我知道应该用构造器模式重写,但是因为没有时间加暂时没有更多需求,选择了写一个重载
    第二个案例时入行没多久,尚不熟悉设计模式时,在一个公共类函数中写了一个简单的 switch 用来分化策略,直到很久之后我再看到这个函数,才发现需求膨胀比我想象的要快得多
    DOLLOR
        26
    DOLLOR  
       149 天前
    想起我很久以前写过一个公共组件,叫做 pubicXXX ,
    后来的同事也有样学样,用类似的方式这样命名 pubicAAA ,pubicBBB ,pubicCCC……
    等项目大了之后才发现问题,但已经积重难返了
    thetbw
        27
    thetbw  
       149 天前
    if(a == true){
    return true;
    }else{
    return false;
    }
    thetbw
        28
    thetbw  
       149 天前
    @dingdangnao 这个不有点用吗,function 上下文不一样呀
    EspoirBao
        29
    EspoirBao  
       149 天前
    @reoah2 可不止如此哦,某个城市现在已经部署了大范围可以检测人脸的摄像头,可以以脸身搜脸,以证搜脸,开车的可以把连续好几天甚至几个月你经过哪些卡口的信息记录下来,是所有 zh 人的脸!至于哪些人可以使用该系统...
    yxisenx
        30
    yxisenx  
       149 天前
    公司有一个快递下单的系统,会生成一个单号,这段代码是我几年前刚转行入职的时候写的,前面是日期,最后六位是一个随机数,我写的是,随机一个数字,检查有无使用,有使用过,继续随机, 没有使用过, 就使用这个数字, 如果一直都重复, 就会一直尝试......还好公司单量不多, 这代码也稳定运行了几年了,还没出问题
    hertzry
        31
    hertzry  
       149 天前
    def forword (self, input):
    root71370
        32
    root71370  
       149 天前
    mysql 前缀查询百分号写到前边了
    code like '%str'
    dode
        33
    dode  
       149 天前
    @yxisenx 现在该怎么写呢
    guanzhangzhang
        34
    guanzhangzhang  
       149 天前
    我同事的代码,就一个 groovy 里传递一个布尔值给 shell ,原本是
    ```
    sh "xxx.sh arg1=${v1} arg2=${v2}"
    ```

    然后他写法是:
    ```
    if (cache=="true") {
    sh "xxx.sh arg1=${v1} arg2=${v2} cache=true"
    } else {
    sh "xxx.sh arg1=${v1} arg2=${v2} cache=false"
    }
    ```
    类似的代码他写了好多次,说了就是屡教不改和找借口🙂
    yxisenx
        35
    yxisenx  
       148 天前
    @dode #33 没改,公司每天就几百单快递,基本没影响
    jipaidian
        36
    jipaidian  
       146 天前
    @thetbw 我也写过,被部门老大狠狠地检视了一番
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2574 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:12 · PVG 13:12 · LAX 21:12 · JFK 00:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.