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

大家工作中都遇到过哪些神奇的代码

  •  1
     
  •   xujinkai · 28 天前 · 5960 次点击
    说出来让我开心一下🤣

    我现在遇到的,命名都是 data、json、obj、map。
    代码复用不存在的,每一个接口都是一大坨,其中一半多没用的验证代码。
    参数全部字符串拼,我肉眼就发现好几个错了。
    文档没有,照着源码猜。
    测试没有。。。严格的说是有的,一个近千行的 main 函数,只要能跑通不报错就行。
    🤣🤣🤣
    88 回复  |  直到 2019-08-26 16:02:55 +08:00
        1
    nikandaoleshenme   28 天前   ♥ 24
    对不起,没碰到过,周边的同事写代码都流弊,代码有注释,文档清晰,源代码有版本追朔,每周 codeview,有 checkstyle,作为一个螺丝钉码农,随时可以被替换,

    没啥存在感,所以最近准备换工作,换到 lz 说的这样的环境中去锻炼锻炼
        2
    xujinkai   28 天前 via Android   ♥ 1
    @nikandaoleshenme 别闹🤣
        3
    fenddddddda   28 天前   ♥ 2
    bool isCan
    if(isCan) {

    }
    else if(!isCan) {
    }
    我前几天刚看到的。
        4
    cabing   28 天前
    @nikandaoleshenme 规范的大厂哦~ =。=
        5
    cabing   28 天前
    你这还行吧。
    你能想象一个类 1w 多行?
        6
    nikandaoleshenme   28 天前
    @xujinkai 想到了一句话,成功的结果只有一个,失败的理由千千万万 (没记清楚,大概这个意思 {表情})
    拿到我们码农来说,就是,规范的代码就一种,不规范的千千万万 (手动滑稽)
        7
    tigerfyj   28 天前 via Android
    @cabing 10 年时候进的一个外企,一个系统 50 多个类,平均 12k 行,最多的三个都是 18k,少的也都 7,8k 行。当时修 bug 真的是爽到了。
        8
    kxy   28 天前
    不知道咋想的,变量能命名成这样,大写的服:
    Map<XXX,XXX> SOME_ANOTHER_MAP = new HashMap<>();
    Map<String,Integer> Map = new HashMap<>();
        9
    pipixia   28 天前 via Android
    @fenddddddda 我还真见过 人都傻了
        10
    Orenoid   28 天前
    昨天还在一篇博客看到这种代码:
    if someCondition:
    return True
    else:
    return False
        11
    trustbutverify   28 天前 via iPhone
    @Orenoid 可以 很严谨
        12
    firefffffffffly   28 天前
    for(int i=0;i<3;i++) {
    switch(i) {
    case 0:
    doSth();
    break;
    case 1:
    doSth2();
    break;
    case 2:
    doSth3();
    break;
    }
    }
        13
    v2hh   28 天前
    @Orenoid 可以,逻辑很清晰
        14
    argc   28 天前
    bool isCan
    if(isCan==true) {

    }
    看到许多人这样写觉得有点神奇。。
        15
    augustheart   28 天前
    看到命名那块我以为是在说我……
        16
    augustheart   28 天前
    @Orenoid 这种代码有个好处是方便下断点:)
        17
    lc1450   28 天前   ♥ 1
    第一次见到这么用 rollback 的

    record = XX.query.get(id)
    if record:
    db.session.delete(record)
    else:
    db.session.rollback()
        18
    Lin0936   28 天前
    var someObj = someBool ? false : true
        19
    Justin13   28 天前 via Android
    const key = someList.find(item => item.key === FOO).key
        20
    no1xsyzy   28 天前
    @Orenoid 可以处理为真但不是真本身的值,尤其如果某个语言没有提供恰当的任意值的布尔转换的内置函数的情况下。
    不过哪个语言没有呢?不然写个 bool_cast 也可以的
        21
    Michaelssss   28 天前
    @Orenoid。。。。。。我这里的一个新手就爱这么写,我都懒得说他了。。
        22
    drafter   28 天前
    楼主说的...和我们公司好像 哈哈哈哈
        23
    taotaodaddy   28 天前 via Android
    @Orenoid 又严谨,行数又多,满足按代码行数 kpi 要求
        24
    Orenoid   28 天前
    @no1xsyzy #20 他那个 someCondition 就是个百分之一百的 bool 值。。
        25
    autoxbc   28 天前
    对于局部变量,当定义过程和调用过程紧邻的时候,简化命名是可以接受甚至是推荐的
        26
    nanmian   28 天前
    i = i++; 交接的时候前人交给我的,至今没想明白他要干什么.
        27
    TencentCEO   28 天前
    看到过一段过滤非法字符的,其实也就是把 ASCII 码值是从 100 到 255 的替换成空格。
    string s;
    遍历字符串里的每个字节,把每个字节再跟 100 到 255 每个对比一下……大概是这样的

    foreach( char c in s)
    {

    for(char a=100; a<256; a++)
    {

    if(c==a) {c=' ';}

    }

    }

    大家看出这段代码的问题了吗?只要把里面那层循环替换成

    if(c>100) {c=' ';}

    就行了……
        28
    TencentCEO   28 天前
    @TencentCEO 而且我们这段代码是出现在大量数据提取时候用的,将近百万条的数据,每条数据有好几个字段要被这样过滤……
        29
    5yyy   28 天前
    CTO 很注重代码质量,刚入职的时候被教育了好多次ಥ_ಥ
        30
    nealwx   28 天前
    我有一个同事专写各种奇怪的代码,只管是否能编过,测试没问题即可。
        31
    shadeofgod   28 天前
    return a <= 0 ? true : false;
        32
    virus94   28 天前
    ob_start();
    ob_clean ();
    然后就没了
        33
    MMMMMMMMMMMMMMMM   28 天前
    <button onclick="alert('清除缓存成功')">清除缓存</button>
        34
    wangchonglie   28 天前
    @nanmian #26 堆砌代码量[滑稽]
        35
    111qqz   28 天前
    ```
    if(label < 0 || label > 4)
    {
    exit(233);
    }
    ```
        36
    Cyshall   28 天前 via iPhone
    @111qqz 一时没看懂,这是要表达啥…,0-4 的值都不要?
        37
    way2create   28 天前
    我变量有时也会命名 data 的 就表示是数据 有什么不妥吗?
        38
    ys759206502   28 天前 via Android
    系统设计成访问到 404 就强制退出系统,然后注销登录按钮索性调了个不存在的接口
        39
    hmxxmh   28 天前 via Android
    @way2create 😂对啊倒是说为什么不规范啊
        40
    monkeylyf   28 天前
    final boolean isValid = true;

    ...

    if (isVaild == true) { // do something. }
        41
    inwar   28 天前 via Android
    @Orenoid 可能前后都是一样的形式复制粘贴,只不过恰好这个是布尔
        42
    loveToMy1   28 天前 via Android
    哈哈 我写的都是不规范的代码😅
        43
    sudri   28 天前
    boolean bool = a == b ? true : false;
        44
    cabing   28 天前
    @tigerfyj 这些坨垃圾代码通常没有单元测试。因为没法测试。业务逻辑耦合验证,很容易牵一发动全身。

    最要命的是业务需求还在堆积。。
        45
    learningman   28 天前 via Android
    @nanmian 可能是觉得直接 i++不优雅
        46
    ddup   28 天前 via Android
    某人写了一个 12MB 的 SQL 存储过程
        47
    xuanbg   28 天前
    我也是经常给变量命名为 data、json、obj。。。反正只是方法内使用一次,搞个变量不过是为了不至于一行代码太长不好看,也方便调试的时候有变量可以看到值罢了。
        48
    Varobjs   28 天前 via Android
    有,就是我
    var obj = varobj.com
    /逃
        49
    ffeii   28 天前
    滥竽充数
        50
    90d0n   28 天前
    某央企建设集团的项目, 全集团在用
    整个项目里一个实体类都没有, 全靠 Map<String, Object>.
    没交接, 没文档, 没注释, 维护起来真爽
        51
    dvaknheo   28 天前
    @cabing web MVC 的 Controller 不都是长这么长么 (逃

    都怪你们说 MVC,业务处理要单独放一层,Controller 层只是作为 外部参数处理的啊
        52
    Xbluer   28 天前   ♥ 1
    总的来说,代码写得好的都在刷 V2,而写的不好的都在哼次哼次写代码。。。
        53
    doublie   28 天前 via iPhone
    有用过 phplist 的同学么
        54
    111qqz   28 天前 via Android
    @Cyshall 认为合理值是[0,4] 槽点是没有任何 log 直接 exit … 接手的时候找了好久
        55
    icekingcy   28 天前 via iPhone
    时间排序法
        56
    ooee2016   28 天前 via iPhone
    string s1, string s2, string s3, string s4...
        57
    chairuosen   27 天前
    mvc,c 里面改 v 的状态
        58
    jakezh   27 天前
    @111qqz #54 不是有 233 嘛 全局搜索打断点就是了
        59
    cabing   27 天前
    @dvaknheo 写过单元测试就不会这么长啊。这么长根本没法测试。。条件都没法覆盖到。
        60
    wangsongyan   27 天前 via iPhone
    @nanmian 单纯为了留个坑
        61
    printese   27 天前
    int a = 0, b = 0;
    if (属于第一类别) {
    a |= 1;
    }
    if (属于第二类别) {
    b |= 1;
    }

    string str = a.ToString()+b.ToString();
    if (str.equals("00")) {
    //不属于第一类别也不属于第二类别
    }
    if (str.equals("01")) {
    //属于第二类别但不属于第一类别
    }
    if (str.equals("10")) {
    //属于第一类别但不属于第二类别
    }
    if (str.equals("11")) {
    //属于第一类别也属于第二类别
    }
        62
    gavindexu   27 天前 via iPhone
    在我司数据库中看到了一个 dajevu
        63
    unicloud   27 天前 via iPhone
    为了给下次优化提供条件,写成这样:
    ...
    doSomething();
    Thread.sleep(3000);
    ...
        64
    GeruzoniAnsasu   27 天前 via Android
    不觉得每次这个话题回复都差不多吗

    无非是没用的 if else,变量名,“超动态”类型

    http://siliconframework.org/
    来看看这种真的挺有意思的代码
        65
    tab16360   27 天前 via Android
    审一个工作 3 年 javaer 的代码,登录方法命名为 tuichu()😓
        66
    ys0290   27 天前 via iPhone
    简单的 if else 可能是为了以后扩充方便
        67
    ethanSong   27 天前
    @argc 估计是 C/C++写多了?
        68
    aitaii   27 天前 via iPhone
    java web 功能,没有定义实体对象,前后台传值用数组。
        69
    hoyixi   27 天前
    领导眼里,能快速的上线,跑起来就行了,至于维护、后期重构,可以靠 996 加班解决,反正涌入这行的小年轻多的是,低价+加班就行,写出来的质量本来也没指望
        70
    aaronhua   27 天前
    中文变量 、过程写法 1800+行
        71
    sherlockwhitebb   27 天前
    function car_id($car,$No,$No_totle){
    $tomorrow=strtotime(date('Y-m-d 23:59:59'));
    $No=0;//今天第几个注册
    $No_totle=0;//总数
    。。。
    }
    这是我这辈子看过最秀的
        72
    dvaknheo   27 天前
    @cabing 哈,单元测试什么鬼, 产品定任务,做完 测试测 OK 上线,上线完。
    “本来好好的,你把他动坏了,你说该怎么办吧”
        73
    hewelzei   27 天前
    ```javascript
    if (objExp.test(url) == true) return true;
    else return false;
    ```
    严谨到完美无缺
        74
    cabing   27 天前
    @dvaknheo 弄坏了,你就是背锅侠。。
        75
    piaochen0   27 天前
    我之前接手了一个项目,大部分变量名都在二十个字以上,基本上就是一句话...
    还有另外一个非常资深的哥们,写的代码自带混淆,所有的命名都是 a1,a2,a3 这样...写游戏引擎的大牛...关键问题是,别人都完全看不懂他的代码,他自己隔了好几个月后,立马就能看懂。
        76
    xdtr   27 天前
    int v1 = 0,v2 = 0;
    (v1 v2 被赋值)
    string s = v1.ToString() + v2.ToString();
    if(s == "1122"){...}
    else if(s == "3344"){...}
    ...
        77
    lonelygo   27 天前
    莫名其妙的 if else 大概率是先写着占位,准备以后扩展,但是,没等到以后就跑路了。
        78
    qwertyegg   27 天前
    do{
    ***
    }while(true)
        79
    xy90321   27 天前 via iPhone
    @Orenoid
    如果是业务逻辑封装那完全不会觉得奇怪
        80
    Orenoid   27 天前 via Android
    @xy90321 主要是那篇文章里头就是个小的不能再小的 demo 代码,我放的基本就是文里的原代码了。。
        81
    111qqz   27 天前 via Android
    @jakezh 那是看到了代码才知道有 233 啊……
        82
    sumika   27 天前
    ```javascript
    var detailsValue1 = "";
    var detailsValue2 = "";
    var detailsValue3 = "";
    var detailsValue4 = "";
    var detailsValue5 = "";
    var detailsValue6 = "";
    var detailsValue7 = "";
    var detailsValue8 = "";
    var detailsValue9 = "";
    var detailsValue10 = "";
    var detailsValue11 = "";
    var detailsValue12 = "";
    ```

    以上代码是我从项目里复制出来的
        83
    EscYezi   27 天前 via iPhone
    最近进了一个项目,说说其中的两个槽点:

    1. 出现拼音+英文混合命名,比如 ListOfYeMian (页面)

    2.连着六七行声明 List<Object> xxList
    然后里面存 Integer ……

    剩下的命名风格不一致、Typo、没有注释、没有文档等等就不说了......听老员工说这项目换了好几批人🌚
        84
    EscYezi   27 天前 via iPhone
    @fenddddddda #3 这个我也遇到了🌚
        85
    EscYezi   27 天前 via iPhone
    @90d0n #50 Java 当成 PHP 写🤣
        86
    linvaux   27 天前
    for i in xxx:
    for j in xxx:
    for k in xxx:
    for t in xxxx:
    xxxx
    别笑,真有人这么写的,毫无意义的变量名
        87
    aguesuka   26 天前 via Android
    int number0=0;这样的代码写到了 47
        88
    NDMXXSMX   25 天前
    @sumika 笑死我了,魔鬼数字啊
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1792 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 28ms · UTC 16:27 · PVG 00:27 · LAX 09:27 · JFK 12:27
    ♥ Do have faith in what you're doing.