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

最近维护一份前人写的 PHP 代码,看的人头疼。

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

    一个查询系统,用户查询和后台管理分两个系统,一个用 lavarel,一个用 ci 框架,当然,这些都不重要,给大家看一下大神的代码:

            $ip = real_ip();  //没有用到
    	if (isset($_COOKIE['P0001'])) {   //p0001 是什么鬼?
    		$arr["status"] = 1;
    		$arr["dBTypeList"] = array( 
                          "0" => array("type"=> "0","databaseNtro" => "MySQL"),  //databaseNtro 是什么
    		      "1" => array("type"=> "1","databaseNtro" => "Redis"),
    		);
    		echo json_encode($arr);
    		} else {
    			echo json_encode(array("status"=>0));  //前后返回 json 格式不一样
    		}
    

    当然,这些都不重要,重要的是

    为什么要把这个项目给我做?

    59 回复  |  直到 2018-05-23 09:56:51 +08:00
        1
    conwey   155 天前 via Android
    哈哈,你现在写的后面来的人也会这样说。
        2
    phpcxy   155 天前 via Android
    因为要服从上级安排
        3
    Seth8277   155 天前 via Android
    看着你直接复制过来的代码也是头疼
        4
    FrankAdler   155 天前
    这点小问题还好意思说, 你维护过十几年的 php 项目吗, 一个文件几万行见过吗, 一个方法上千行见过吗
        5
    des   155 天前 via Android
    不知道楼主见过,"保证执行顺序用 settimeout,保存操作放在 getxxx 里面" 这样的代码没有
        6
    jojojo   155 天前
    @FrankAdler 一个方法上千行还真见过
    @conwey 至少我不会不写 readme,也不会把各种路径全部写死在代码里,也不会写一堆看不懂意思的变量
    @des 这种比较吊的就没见过了
        7
    allgy   155 天前
    这就是我转 python 的原因
        8
    fhefh   155 天前
    当初跟楼主一样
    现已麻木 只管写 业务能跑即可 没人会看你的代码的
    除非你有时间重构~
        9
    zjsxwc   155 天前 via Android
    差不多
        10
    Nick66   155 天前
    哈哈
        11
    forestyuan   155 天前
    维护别人的代码肯定好多坑啊
        12
    h1367500190   155 天前
    @des 这个牛逼


    @jojojo 以后你会见过更坑的
        13
    wly19960911   155 天前 via Android
    @des settimeout 我用过,为了保证是最后触发,问题我也很无奈啊,前端 ui 框架没有分离,需要实现的功能是动态添加,修改了 Dom 结构导致事件不能直接绑定,加上 ui 框架初始化没有接口,只能用 settimeout 去最后执行事件绑定。
        14
    coolesting   155 天前
    我维护过一个项目,不用 <a> 来跳转页面的, 而是无限的 js 弹出窗口(新的页面)。
        15
    fulvaz   155 天前
    正在维护的 ts 项目.

    前人一个函数可以 return 出多种不同的类型, 一个函数根据传入参数的不同可以做很多事情

    全是 initValue 和 pickItem, 至于返回了什么只有他知道.

    开发环境崩了

    后端 api 文档不更新了

    不遵守 tslint

    完全把 ts 当 js 写了, 对象没任何 type 定义

    把 redux 的 store 当 obj 用, 如 store.a = xxx

    全是复制粘贴.

    诡异的实现方法

    全世界在催我

    --------------------------

    TM 这么恶劣的条件我竟然一个个猜到了这坨东西写了啥!

    然后一个个重构命名!
        16
    jojojo   155 天前
    @allgy 跟语言没关系吧,更多的是一个人职业素养的问题,当然,可能我是运维开发的关系吧,我遇见的 php 只有几个水平不错的,大部分都很垃圾
    @forestyuan 维护这种代码很容易影响心情
        17
    fulvaz   155 天前
    @des 来个刺激的

    实现这么一个需求

    父组件点击打开按钮时, 子组件会执行对应的动作, 然后子组件动作执行结束后, 父组件再执行其他动作.

    然后出现了这样的写法

    将父组件的 open 属性传给子组件作为 input

    然后父组件点了打开, 就会出现这么一个执行顺序的东西...

    父.open = true -> 子的 onChange 生命周期函数判断自己的 open 为 true, 做自己的事情 -> 父的定时器 100 触发, 执行自己的动作.

    这还是个用了全局状态的项目.
        18
    iRiven   155 天前 via iPad
    这代码真心没啥好吐槽的
        19
    mahone3297   155 天前
    @fulvaz 》 TM 这么恶劣的条件我竟然一个个猜到了这坨东西写了啥!
    看来写的还可以。。。别人还是看得懂的,哈哈哈
        20
    Linxing   155 天前 via iPhone
    逼着你重构一个
        21
    Actrace   155 天前
    其实我总结一下各位的意见,就是他写的代码我,,,
    不想读不想读不想读,我不想知道他到底写的是什么,他算老几,我为什么要去理解他的代码,

    大概应该是这样。
        22
    spark20   155 天前 via Android
    我觉得只要把变量的意思,算法,写清楚就好了吧,其他的还好说
        23
    GGGG430   155 天前 via iPhone   ♥ 1
    else 看着难受
        24
    xjroot   155 天前
    直接删除,自己重写吧。 就单纯 $_COOKIE['P0001'] ,就可以搞点事情了, 返回 json 这个判断写的根本无法用。
        25
    karlxu   155 天前
    当时我也是,维护了几个月,放弃了,用 Django 重写了
        26
    nosay   155 天前   ♥ 1
    v 站的人似乎不怎么接二次开发..
    反正我接很多二次开发
    这代码还有什么好吐槽的?太年轻了!
    重构? v 站的很多人好像时间很多的样子...
    不说了,继续搬砖了
        27
    yangqi   155 天前   ♥ 1
    这么简单的代码有啥好吐槽的,看懂大概意思就行了,你揪着细节不放,应该先问一下你自己有没有同样的问题。
        28
    chairuosen   155 天前
    每一个王子最后都会变成恶龙
        29
    zarte   155 天前
    第一个不用了懒得去掉,第二个想不到英文,第三个英文太长缩写不知道该怎么缩,第四个返回格式是一样的。
        30
    changepll   155 天前
    质量这么高的代码,楼主有什么好抱怨的
        31
    azh7138m   155 天前
    @wly19960911 事件委托了解一下?
        32
    fcten   155 天前
    这 json 格式哪里不一致了,不是有个通用的 status 属性用来判断吗
        33
    wly19960911   155 天前 via Android
    @azh7138m 恩,想了下的确我错了,不过这个委托都快到根节点了。
        34
    RorschachZZZ   155 天前
    现在我维护古董代码。只要变量和方法命名规范点、再稍微有点业务解释。感觉已经非常满足了。。
        35
    ryuzaki113   155 天前
    不知道楼主有没有见过,“防止保存失败,for 循环保存一百次”
        36
    linxl   155 天前
    命名确实看不懂干啥的, 坑啊
        37
    broadliyn   155 天前   ♥ 3
    有能力的人早就在开始在理旧代码思路和做重构了。没能力的人跟个怨妇一样贴一通代码到坛子里来获取认同感。

    能把代码看明白整清楚也是一个能力明白吗?你自己写的代码,后边接手的人一样会喷你写的辣鸡。

    很多时候你不是当事人,没有代入当时的需求场景,你根本不会知道为什么他当时会这么写。换成是你自己,估计也不会写的更好。

    只要不是因为能力水平差、思路逻辑混乱写出来的代码,一般都不会是烂代码
        38
    nowgoo   155 天前
    isset($_COOKIE['P0001']) 可能是一个隐藏的调试开关。
        39
    Felldeadbird   155 天前
    接受现实是每个程序员成长必经之路。
        40
    lj3lj3   155 天前
    这样的代码风格已经不错了 看我接手的
    ```
    $username = htmlspecialchars($_SESSION['adminname'],ENT_COMPAT ,'GB2312');//用户
    $addtime = time();
    if($addcode!=$originator){
    exit("<script type='text/javascript'> alert('请不要刷新本页面或重复提交表单!');location.href='".$sourceurl."';</script>");
    }else{
    unset($_SESSION["addcode"]);
    if($id!="" && $name!=""){
    $que=$db->query("select * from ".$cfg_dbpre."news where id=$id");
    $num=$db -> num_rows($que);
    ```
        41
    NxiJSiOS   155 天前
    正常
        42
    t2doo   155 天前
    这就叫你头疼啦,那你是没看过我写的 PHP 啰,哈哈哈
        43
    jadec0der   155 天前
    贵司的缩进是八个空格?
        44
    luoway   155 天前
    @Actrace #21
    还有一种:
    啥时候有时间重构代码,真 TM 想把代码改成我的
        45
    azh7138m   155 天前
    @wly19960911 react 都在 document 上处理事件,根节点就根节点呗
        46
    Norie   155 天前 via iPhone
    @broadliyn 就连自己写的过段时间回去看都不知道为什么会这么写!
        47
    annielong   155 天前
    感觉写的没什么大问题,一看就知道这个是干嘛的了,
        48
    foursking   155 天前
    就这心态,离职吧
        49
    joeke   155 天前
    这个只是意思上的不理解而已,也没啥好吐槽的,实在不行就自己重构呗
        50
    mchong   155 天前
    @lj3lj3
    我十几年前也是这么写的,而且代码现在还在用,我还在维护.....
        51
    qcind   155 天前
    祖传的代码,要好好守着。
        52
    realpg   155 天前
    我觉得楼主贴这些代码没啥太大的问题。
    肯定是有点难懂需要结合其他代码(如果没有文档),但是绝对不算啥大坑
        53
    lepig   155 天前
    楼主 刚开始工作吗
        54
    konakona   154 天前
    哈哈,不写注释党。
        55
    Justin13   154 天前 via Android
    js,一个 8000 行的函数见过没。
        56
    liuxu   154 天前
    清晰易懂啊
        57
    paranoiagu   154 天前 via Android
    人肉混淆听说过吗?
        58
    cncqw   154 天前
    @allgy 这跟转 python 有什么关系,python 照样能写出奇葩代码,写个 python 还写出优越感了?
        59
    lj3lj3   153 天前
    @mchong 主要是现在那个货还在这么写 给客户做的网站全都这 还不给时间重构 耳边响起了糙猛快优美的旋律
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3277 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 20ms · UTC 09:34 · PVG 17:34 · LAX 02:34 · JFK 05:34
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1