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

发一个认为自己代码很差很差的

  •  
  •   Annual · 2018-01-12 01:30:36 +08:00 · 11851 次点击
    这是一个创建于 2509 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT,主题 https://mi90.com/20180112012844.png
    是不是乱的无可救药?

    第 1 条附言  ·  2018-01-13 01:23:26 +08:00
    先声明一下,程序并非我开发。我只是下载过来进行修改,应该可以称作二次开发吧??

    还有,LZ 本身也是刚入门 PHP,还有很多不了解的地方,目前还没有了解面向对象开发。所以各位推荐框架的我也是用不上。

    我自己定义学 PHP 开发的过程应该就是先去尝试修改别人的程序,弄懂原理再去自己单独开发一套程序。不然你让我怎么入门,甚至是先干什么?
    88 条回复    2018-01-23 19:10:29 +08:00
    xfspace
        1
    xfspace  
       2018-01-12 01:35:06 +08:00 via Android
    能用就行 :doge:
    IceBay
        2
    IceBay  
       2018-01-12 01:57:16 +08:00   ❤️ 1
    看的我想用 phpstorm 的 ctrl+alt+L 格式化一下
    WuwuGin
        3
    WuwuGin  
       2018-01-12 02:08:42 +08:00
    反正看上去挺乱的
    akira
        4
    akira  
       2018-01-12 02:13:32 +08:00
    连续赋值那一段没对齐 看着好难受
    zhizunzz
        5
    zhizunzz  
       2018-01-12 02:14:18 +08:00 via Android
    表示淡定,比我厂还是要整洁多了
    des
        6
    des  
       2018-01-12 02:41:49 +08:00 via Android
    好想吐槽…… 算了
    emmmm ……
    现在不都是用框架的么
    Annual
        7
    Annual  
    OP
       2018-01-12 04:31:16 +08:00 via Android
    @des 入门 php 都是从改程序入门的 233,框架还看不懂
    yorTX9t
        8
    yorTX9t  
       2018-01-12 04:39:25 +08:00
    你们拍黄片的都会写这么长的一行代码么?我是指最后一行
    Annual
        9
    Annual  
    OP
       2018-01-12 04:40:39 +08:00 via Android
    @yorTX9t 怎么顺怎么来,再说,我只会 echo
    iRiven
        10
    iRiven  
       2018-01-12 08:00:51 +08:00 via Android
    除了 if 后面没加大括号 其他很舒服
    shiji
        11
    shiji  
       2018-01-12 08:14:06 +08:00
    @yorTX9t 我 SQL 一般喜欢美化一下再往里面塞。 否则根本不可读啊
    shiji
        12
    shiji  
       2018-01-12 08:15:35 +08:00
    话说最后一行那个双引号。。还需要用 . 拼接么。。。。 变量直接放里面就信了吧,可能引起歧义的话套个花括号
    weilongs
        13
    weilongs  
       2018-01-12 08:18:32 +08:00
    功能实现,谁看你代码。
    defuck
        14
    defuck  
       2018-01-12 08:23:16 +08:00 via Android
    那是因为你没看 discuz 的代码
    meanmachine
        15
    meanmachine  
       2018-01-12 08:24:55 +08:00 via Android
    哪天改代码时候 intval 被删了 emmmmm
    pixes4world
        16
    pixes4world  
       2018-01-12 08:48:34 +08:00
    至少逻辑结构还是比较清晰的,LGTM
    king2014
        17
    king2014  
       2018-01-12 08:54:12 +08:00
    楼主写的?
    kran
        18
    kran  
       2018-01-12 08:54:44 +08:00
    出血者。
    HuHui
        19
    HuHui  
       2018-01-12 08:59:42 +08:00
    这在我见过的代码中能算优秀了
    free9fw
        20
    free9fw  
       2018-01-12 09:07:17 +08:00
    变量可以精简一下,用个字典就行了
    oaix
        21
    oaix  
       2018-01-12 09:07:45 +08:00
    不觉得太乱, 挺直白的.
    格式有点乱, 行内少了很多空格(比如`=`左右, if 后面 等等), 不是大问题, 用 IDE 的格式化功能格式化一下.
    另外 if 只有一个子语句时, 也建议加上大括号.
    sql 那段有点, 可能有注入的风险.
    另外行间不同功能逻辑其实用空行隔开了, 可以用 IDE 提供的重构功能, 提取成一个函数.
    q409195961
        22
    q409195961  
       2018-01-12 09:10:06 +08:00   ❤️ 2
    金额是不是可以传 0.0091
    whx20202
        23
    whx20202  
       2018-01-12 09:22:00 +08:00
    突然觉得 python 真特么好,看代码就跟看文章一样
    flyshu
        24
    flyshu  
       2018-01-12 09:22:59 +08:00
    挺好的 原生不都这样写吗
    yichinzhu
        25
    yichinzhu  
       2018-01-12 09:27:51 +08:00 via Android
    一眼就看到了 SQL 注入,,,
    DavidNineRoc
        26
    DavidNineRoc  
       2018-01-12 09:41:08 +08:00

    这样子优雅很多 (逃
    建议使用 StyleCI 格式化一下代码,有多种标准格式可以选
    v2xe2v
        27
    v2xe2v  
       2018-01-12 09:42:43 +08:00
    没格式化,难受
    xhinliang
        28
    xhinliang  
       2018-01-12 09:45:56 +08:00
    前鹅肠员工路过。
    在鹅肠见过比这恶心一百倍的代码。
    ZXCDFGTYU
        29
    ZXCDFGTYU  
       2018-01-12 10:17:10 +08:00
    这代码真的是能写成这样也是一种奇迹,哪怕用个 tp 也不至于写成这样啊。。
    13036101641
        30
    13036101641  
       2018-01-12 10:18:24 +08:00
    一般都有代码规范的插件或者工具吧
    carlclone
        31
    carlclone  
       2018-01-12 10:22:58 +08:00
    远古 PHPer 面向过程面条式代码
    lbp0200
        32
    lbp0200  
       2018-01-12 10:36:52 +08:00
    @yichinzhu +1 SQL 注入是原罪,初级水平。
    yujieyu7
        33
    yujieyu7  
       2018-01-12 10:39:37 +08:00
    在 header 函数前加错误控制符是什么鬼?
    killall
        34
    killall  
       2018-01-12 10:44:45 +08:00 via Android
    这就是传说中的面条代码…不分结构不分分层,所有的东西全都烩到一起,出现问题从头读到尾,数据结构变了得改一堆的文件…业务增长在文件里不停地打补丁,最后知道维护到整个人崩溃。
    justfindu
        35
    justfindu  
       2018-01-12 10:45:14 +08:00
    原生也就只能这样写了 格式化一下也许好看一些
    lepig
        36
    lepig  
       2018-01-12 10:45:30 +08:00
    还行 没到吐槽的地步
    b821025551b
        37
    b821025551b  
       2018-01-12 10:50:48 +08:00
    挺好的了,能看懂,格式化一下逻辑很清晰。
    bramblex
        38
    bramblex  
       2018-01-12 11:16:48 +08:00
    @killall 把整个网站写到一个 php 文件里面
    3than
        39
    3than  
       2018-01-12 11:24:28 +08:00
    @yichinzhu +1 不管程序写的怎么样 但是 sql 注入..
    hei1000
        40
    hei1000  
       2018-01-12 11:26:13 +08:00
    我不是稿 php 的不平论,但是最后那两行长度上真实毁了前面
    mingzu
        41
    mingzu  
       2018-01-12 11:29:49 +08:00
    屏幕挺宽啊...
    tongz
        42
    tongz  
       2018-01-12 11:41:39 +08:00
    看倒是能看,这样写代码维护起来得崩溃,如果我接盘你的代码。。算了我不想爆粗口
    polymerdg
        43
    polymerdg  
       2018-01-12 11:47:58 +08:00
    @3than 哪有 SQL 注入 没看见呢
    sbw
        44
    sbw  
       2018-01-12 11:49:27 +08:00
    真羡慕你们不用做国际化的
    HanSonJ
        45
    HanSonJ  
       2018-01-12 11:53:29 +08:00
    看着不爽,但还能抢救。

    嗯,我真的很严格
    popu111
        46
    popu111  
       2018-01-12 11:59:45 +08:00 via Android
    @polymerdg 最后一行,拼接 query
    jea
        47
    jea  
       2018-01-12 11:59:55 +08:00
    这个 应该是早些年的老代码了, 当时这么写肯定是有原因的
    我这里也有这种代码, 现在的新入门搞 php 的基本都不知道这种缩写的方式
    而且目前都推荐 pdo 了, 预绑定参数和类型, 比这好看多了, 还安全
    不用吐槽这个, 直接改了就是了, 老代码中还没有类库的自动加载, 多看看当时的背景, 在当时, 这个可不 low

    另外如果是现在的新人写的...直接给个内部规定的规范到脸上去
    NowTime
        48
    NowTime  
       2018-01-12 12:06:21 +08:00
    第 25 行,引入的文件好熟悉,第 61 行,这个 MySQL 操作类也好悉...
    消失的彩虹海?=.=
    580a388da131
        49
    580a388da131  
       2018-01-12 14:54:29 +08:00
    这是典型的初学者代码吧
    0ZXYDDu796nVCFxq
        50
    0ZXYDDu796nVCFxq  
       2018-01-12 15:00:55 +08:00
    真羡慕你们这些拿到 args 就敢往 sql query 里塞的大佬
    mht
        51
    mht  
       2018-01-12 15:16:22 +08:00
    面向过程的写法 不都这屌样吗....
    catinsides
        52
    catinsides  
       2018-01-12 15:37:10 +08:00
    居然没有人吐槽这个主题的标题
    Sypher
        53
    Sypher  
       2018-01-12 15:47:55 +08:00
    @gstqc
    真羡慕你们这些拿到 args 就敢往 sql query 里塞的大佬
    --------------------------------------------------------------------
    我 tm 被你这条回复笑哭了,哈哈哈哈哈哈嗝
    litter123
        54
    litter123  
       2018-01-12 15:57:05 +08:00
    @gstqc 唉,拿到 args 的一直瑟瑟发抖,又清又转才敢往 prepare bind 里面塞
    deadEgg
        55
    deadEgg  
       2018-01-12 16:04:07 +08:00
    看上去很难受。

    @jea 请问是什么原因让人不用三元表达式代替那段恶心的 if else 赋值?
    cxh116
        56
    cxh116  
       2018-01-12 16:22:13 +08:00 via Android
    @whx20202 当你碰到写 py 的,空格和 tab 混用时,那酸爽 。。。
    whx20202
        57
    whx20202  
       2018-01-12 16:26:16 +08:00
    @cxh116 不会吧,会报错的这样。。。。
    tagtag
        58
    tagtag  
       2018-01-12 16:46:03 +08:00
    发一个认为自己代码很差很差的人 or 发一个自己认为很差很差的代码,他代码不行,你语文不行。
    Annual
        59
    Annual  
    OP
       2018-01-12 17:13:05 +08:00
    @q409195961 应该没有人可以这么傻。。
    Annual
        60
    Annual  
    OP
       2018-01-12 17:17:19 +08:00
    @NowTime 是的,我在修改这个程序。因为看着很乱,不好下手。应该属于二次开发或者叫其他的吧。
    onion83
        61
    onion83  
       2018-01-12 17:33:04 +08:00   ❤️ 2
    说 SQL 注入的都没好好看代码,paraFilter、daddslashes 是什么?

    从代码的风格和逻辑上看没啥大毛病,除了啰嗦点,改做的非空判断也有,能看懂为什么要在 header 前加一个 @ 的人我敢说楼上没几个。

    综上述,码主至少有 >= 1 年 PHP 实际工作经验,这年头不用框架还能裸写 PHPer 没几个了,能搞清逻辑不炫技,踏踏实实搞清业务流程更是难得,在帝都工资开 15k 没问题。
    hcymk2
        62
    hcymk2  
       2018-01-12 17:34:25 +08:00
    paraFilter、daddslashes 有多大用?
    hcymk2
        63
    hcymk2  
       2018-01-12 17:36:45 +08:00
    这个只能说是有些年代的代码了。
    还有直接把错误提示写死。
    ioven
        64
    ioven  
       2018-01-12 17:55:24 +08:00
    几年前的代码风格,和帝国 cms 类似
    pein
        65
    pein  
       2018-01-12 17:56:06 +08:00
    还可以了,格式化一下会好很多,你是没见过乱的代码,敢不敢把 wordpress 源码打开看看?😄
    chairuosen
        66
    chairuosen  
       2018-01-12 18:02:39 +08:00
    @onion83 前面 echo 了后再写 header 会报 header already sent?
    checgg
        67
    checgg  
       2018-01-12 18:02:54 +08:00
    我曹。又来黑 PHP
    nosay
        68
    nosay  
       2018-01-12 18:17:57 +08:00
    这代码看着好熟悉,莫名的亲切感。并不感觉有什么问题。年代久远点的代码不都长这样?看到 require 和 @你们心里没点 B 数?
    GooMS
        69
    GooMS  
       2018-01-12 18:58:44 +08:00 via Android
    这个订单号重复了怎么办
    UnknownR
        70
    UnknownR  
       2018-01-12 19:25:35 +08:00
    和我们新人写的脚本差不多。。
    sensui7
        71
    sensui7  
       2018-01-12 19:47:42 +08:00
    32 行有函数式的影子, 这个不乱, 只是没经过重构而已.
    Annual
        72
    Annual  
    OP
       2018-01-12 21:00:42 +08:00
    @GooMS 不是大站点,所以不进行去重吧。
    sodowe666
        73
    sodowe666  
       2018-01-12 21:13:13 +08:00
    突然发现 Yii2 真美妙
    KgM4gLtF0shViDH3
        74
    KgM4gLtF0shViDH3  
       2018-01-12 21:41:08 +08:00 via Android
    没有过滤?
    changwei
        75
    changwei  
       2018-01-12 21:56:50 +08:00
    没有用框架都是这样,很乱很乱,很多重复冗余的代码,我之前在 QQ 群里面接过几个类似的改代码的活儿,吃力不讨好,有看懂这些代码的时间我都用框架给他重构一个了。

    但是我也看到了几个亮点,比如 SQL 语句关键词大写,这个可以让 IDE 和编辑器很方便的高亮以及自动查错,还有就是双引号拼接会用大括号将变量包含起来,可以有效防止变量粘连(用大括号强行分离,防止变量名和后面的字符串粘连导致出莫名其妙的 BUG ),这两点我看很多用框架写 php 写了很久的人都没有做到。
    loveyu
        76
    loveyu  
       2018-01-12 22:12:03 +08:00 via Android
    经过楼上各位大神的分析,这段代码质量绝对过关。而且我遇到的大多数人在不用所谓的框架时也很难写得比这好!第一个 header 前面的 @符用来屏蔽 notice 错误,现在开 notice 错误写代码的人,我遇到的太少了。
    mingyun
        77
    mingyun  
       2018-01-12 23:54:34 +08:00
    empty($) && return false;
    suit
        78
    suit  
       2018-01-13 00:11:42 +08:00
    suit
        79
    suit  
       2018-01-13 00:16:04 +08:00
    @mingyun && 运算符只能计算标量、函数和表达式
    Senorsen
        80
    Senorsen  
       2018-01-13 01:03:26 +08:00
    不光是乱的问题了,代码本身也有问题。用 addslashes 代替 sql escape 就是一种错误做法。
    Annual
        81
    Annual  
    OP
       2018-01-13 01:18:50 +08:00
    @suit 你好,回答一下图片。
    1,因为是一个 pay 接口,所以并不会预先知道用户开发上使用哪一种请求方式。
    2,yes
    3,用户状态属性,因为只有 1 和 0 两个值,所以就直接写入了。
    4,原作者为什么要这么写我也不清楚,为了不引起各种错误,就没有进行更改,因为这个程序经过大量的 pay 测试。
    5,因为是 pay 程序,需要传递商品名称进行保留。
    580a388da131
        82
    580a388da131  
       2018-01-13 06:25:33 +08:00
    @Annual $_SERVER['REQUEST_METHOD']
    Seanfuck
        83
    Seanfuck  
       2018-01-13 09:16:29 +08:00
    挺清晰明了的,代码格式化一下就很好了
    ctro15547
        84
    ctro15547  
       2018-01-13 09:53:22 +08:00
    别吝啬空格和回车啊 你要是这样写 python 早就哭晕在大街上了
    daniellu
        85
    daniellu  
       2018-01-13 10:17:07 +08:00
    @yichinzhu 正解,SQL 注入妥妥的。
    Tink
        86
    Tink  
       2018-01-13 11:02:29 +08:00 via iPhone
    需要格式化
    wizardoz
        87
    wizardoz  
       2018-01-13 13:13:44 +08:00
    这个标题我认为就挺乱的
    wmwgijol28
        88
    wmwgijol28  
       2018-01-23 19:10:29 +08:00
    你看过微擎的东西么
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5668 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 09:05 · PVG 17:05 · LAX 01:05 · JFK 04:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.