• 请不要在回答技术问题时复制粘贴 AI 生成的内容
danhahaha
V2EX  ›  程序员

最近接了个上古 PHP 项目,看到代码的那一刻,我死的心都有了,求解脱

  •  
  •   danhahaha · May 6, 2017 · 11277 views
    This topic created in 3473 days ago, the information mentioned may be changed or developed.

    最近接了个项目,需求很简单,对方也要求低,薪酬不错,所以就爽快的答应了

    但是看到代码那一刻才明白,我他妈的是掉到坑里了

    怎么说呢,我大一时候学的 php,当然开始时候是用原生 php,没觉得不妥,慢慢的做了 1 年,使用框架,才知道原生真的很难拓展,修改,现在用习惯了 laravel,symfony 这种现代框架,看到原生真的是想哭啊。

    感觉是另外一种语言。

    关键是这套系统全是 sql 原生查询啊,根目录全是 php 文件啊,html 全是表格嵌套啊,js 全是自己写的啊,居然还用了 git 版本控制,但是没什么鸟用,大概只是后来的接盘侠提交了不到 20 个页面,其他的估计就只有这位上古程序员知道什么是什么了,最最关键的是这位技术记性,逻辑极其牛逼,项目涉及到大量的积分,支付结算,慢慢的逻辑

    我爱 php,知道很多人说 php 不好,但是我觉得没什么,因为 php 上手快,出活快,赚钱也快,但是看到这个,我真的不知道该怎么办了,活是肯定要继续的,客户比较好,按时间付费,求各位大神有没有什么办法,或者简单框架可以再原生基础上快速重构,或者改版,或者什么的容易结合使用的?

    71 replies  •  2017-05-08 14:59:44 +08:00
    viko16
    viko16
    May 6, 2017 via Android❤️1
    1
    退订跑路!
    gouchaoer
    gouchaoer
    May 6, 2017 via Android❤️1
    2
    你 laravel 都能学会,单页肯定没问题
    U7Q5tLAex2FI0o0g
    U7Q5tLAex2FI0o0g
    May 6, 2017❤️1
    3
    如果这个项目原先的功能不多不复杂,直接整个项目重构好了,你后续新增功能也方便
    如果之前已经非常复杂了,还是不要动,毕竟如果你对之前的功能逻辑不清楚的情况下贸然重构。。。

    取舍吧
    danhahaha
    danhahaha
    OP
    May 6, 2017
    4
    @littleylv 客户要改的是前端,之前很丑,要改模板,但是全是 echo + 表格
    gyorou
    gyorou
    May 6, 2017❤️1
    5
    我之前接收过的上古 php 项目,一个 http 的 request 从 socket 的绑定开始写。
    kn007
    kn007
    May 6, 2017
    6
    这个只能花时间。没别的办法。很尴尬。
    ChopMoun
    ChopMoun
    May 6, 2017
    7
    你也说了改的是前端。只是比较繁琐罢了,时间上的问题,再说客户是按照时间付费,这有什么好解脱的?
    NonClockworkChen
    NonClockworkChen
    May 6, 2017
    8
    就是说原作者是一位 php 的上古大拿吗- -
    em70
    em70
    May 6, 2017 via Android
    9
    多花时间多收钱,有什么不好
    tabris17
    tabris17
    May 6, 2017
    10
    你现在需要产品说明书
    laoyuan
    laoyuan
    May 6, 2017
    11
    捂脸,我现在写的还是这样的上古代码,各种 mysql_fetch_assoc,以及 echo 出来的 JS。。
    去年想用 Laravel 重写来着,历史问题太多愣是没写下去
    laoyuan
    laoyuan
    May 6, 2017
    12
    尴尬之处在于,代码没有完全重构之前,加功能还得继续上古
    Felldeadbird
    Felldeadbird
    May 6, 2017❤️1
    13
    吐吐槽就好了,该怎样做还是要做。重构就免了,因为你的收入根本不足够你去重构如此项目。
    如果要改善此项目。1:在新功能中引入新架构开发,同时要确保原有的函数、方法可以调用。2.修改旧功能,看开发时间而定,如果很耗时较长,直接在原架构下开发。反之参考第一点。
    对于老旧项目,除非老板肯定重构,否则不要一步到位。这需要新旧架构通存过渡期。
    reus
    reus
    May 6, 2017
    14
    无能。
    dsg001
    dsg001
    May 6, 2017
    15
    画重点:需求很简单,对方也要求低,客户比较好,按时间付费;

    那就慢慢来呗,客户又没有要求重构
    danhahaha
    danhahaha
    OP
    May 6, 2017
    16
    @reus 再加个为力不是更好
    danhahaha
    danhahaha
    OP
    May 6, 2017
    17
    @dsg001 恩,话是这么说,不过就成了体力劳动了,真正得码农了
    Erskine
    Erskine
    May 6, 2017 via Android
    18
    原生就不好吗
    mathgl
    mathgl
    May 6, 2017
    19
    @gyorou 高手哪。
    zjqzxc
    zjqzxc
    May 6, 2017
    20
    不要重构,重构坑更多

    慢慢改吧。。没有太好的方法
    jiehuangwei
    jiehuangwei
    May 6, 2017
    21
    缝缝补补又一年
    yumijie
    yumijie
    May 6, 2017
    22
    @jiehuangwei 赞同
    dsg001
    dsg001
    May 6, 2017❤️1
    23
    @danhahaha 对方代码应该是经过漫长时间考验,比较稳定可靠的,如果重构能保证提高效率而且没坑吗?如果只是因为洁癖就去重构客户代码,这才是坑吧
    Mutoo
    Mutoo
    May 6, 2017
    24
    不要重构,要重写。
    QQ2171775959
    QQ2171775959
    May 6, 2017
    25
    希望您能静下心来,好好思考一下,也许就会发现并没有那么难的,抗过了这一波后,又是一个英雄好汉。
    wangjie
    wangjie
    May 6, 2017
    26
    我接手过最烂的代码还不过是一份基于 tp3 的代码
    sagaxu
    sagaxu
    May 6, 2017
    27
    @gouchaoer

    封装得当的代码,一个功能可能调用了 10 个业务方法,理想的情况下只要看一下十几个名字就了解个大概了,最差情况是名字不好,得一层层的人肉过一遍代码。

    封装不好的代码,一个功能几千行代码全放一起,call stack 是比较浅,但是要读更多的细节代码,还很容易陷入复制粘贴的泥淖,到处长得相似却又并不完全一样的代码是很头疼的。

    封装可以把实现细节和意图隔离起来,维护代码的时候,我们更多关注意图之间的串联,而非实现细节。
    danhahaha
    danhahaha
    OP
    May 6, 2017
    28
    @wangjie tp3 起码还前后分离了
    ferran
    ferran
    May 6, 2017
    29
    从接盘到跑路
    hzw94
    hzw94
    May 6, 2017
    30
    无解的代码
    hellpeng
    hellpeng
    May 6, 2017
    31
    删除工程, 新建工程
    wolfan
    wolfan
    May 6, 2017
    32
    新建项目申请项目资金。
    fuxkcsdn
    fuxkcsdn
    May 6, 2017 via iPhone
    33
    都知道是上古项目了,还能要求啥?
    之前公司里还有个项目是 PHP 4 时代写的呢。
    这种上古项目修改起前端感觉反而更方便,基本上一个页面就是一个 php 文件,URL 就已经指名了
    个人最无法接受的是代码格式混乱,看代码时总有格式化代码的冲动(一格式化起来就没完没了了)
    visonme
    visonme
    May 6, 2017
    34
    在原生 php 工程基础上用框架不可取,最近的一个项目就是类似情况,后面果断放弃了,只能坚持原生或者框架重写。

    原生 php 工程如果代码结构好点,其实修改起来还是很容易的。
    PythonAnswer
    PythonAnswer
    May 6, 2017
    35
    提取表格,生成 api。
    isbase
    isbase
    May 6, 2017 via Android
    36
    这次放弃了,以后还会放弃的
    designer
    designer
    May 6, 2017
    37
    突然钦佩上了上古大拿
    Meimei
    Meimei
    May 6, 2017
    38
    我只有说钦佩,继续努力干
    shijingshijing
    shijingshijing
    May 6, 2017
    39
    @sagaxu @danhahaha

    算好的了,起码认真看看还能看懂。楼主,你见过拼音首字母命名的表名和字段名么? ZYXX, KHXX, DDXX 你猜猜是啥意思? 你见过中英文混合命名的变量名么? oneTimeDiscount, noDiscount, zhongShengDiscount

    所以说,楼主你还是加油干吧,你吃的这堆屎还算香的呢。呵呵
    liuxu
    liuxu
    May 6, 2017
    40
    我公司老网站也是你说的那个样子,然后我们自己定义 mvsc 层,新需求都用 mvsc 写
    拿请求返回数据由 action 操作,显示页面用 view,view 层用 smarty 做,view 里面的 ajax 接口都是 action,action 和 view 调用逻辑处理 service 层,service 遇到数据库,文件读写调用 model
    还需要自己写一个公共 model 类,封装原生 mysql,然后每个模块的 model 引用这个公共 model,操作会很轻松

    严格按照这个来的话,有很多代码可以直接复制粘贴修改就行,很节约时间
    jarlyyn
    jarlyyn
    May 6, 2017❤️1
    41
    没有说明书的话。

    这种代码比基于任何一个框架的都好改。

    楼主属于锤子用多了,觉得什么都应该是钉子……
    8355
    8355
    May 6, 2017
    42
    个人建议你还是把你项目情况跟客户解释清楚 问问客户是否需要重构 如果需要的话你就完全帮忙重写一个项目 直接抛弃掉这个 如果原来的数据库建的还能用就继续用 如果不行就重新洗一下数据开始你的重构吧..
    如果不需要你就继续用传统开发直接写就好了啊.
    billlee
    billlee
    May 6, 2017❤️1
    43
    你这还好啊,更可怕的是自己造了个没文档的框架。。
    run2
    run2
    May 6, 2017
    44
    感觉至少要把 view 整合下 不想上 framework 的话直接上 twig 吧( template 引擎) https://twig.sensiolabs.org/
    paullee
    paullee
    May 6, 2017 via iPhone
    45
    h
    harker
    harker
    May 6, 2017
    46
    建议在基础上慢慢改吧,只是原生代码生疏了,看熟老古董就好了
    Z1076
    Z1076
    May 6, 2017
    47
    我现在就接手了一个这样的项目做二次开发,一个 php 文件,1w8 行,就问你怕不怕。
    Z1076
    Z1076
    May 6, 2017
    48
    用 phpstorm 修改这个文件,打开的时候笔电的风扇都跟发动机一样响。真是日了狗...
    loserwn
    loserwn
    May 6, 2017
    49
    说「上古」我还以为是 PHP3 PHP4 呢。。。中老年程序员(逃
    aksoft
    aksoft
    May 6, 2017
    50
    一分钱一分货。。一步一步调试吧。
    我也这么干过,至于后来入坑者。。。
    shmilypeter
    shmilypeter
    May 6, 2017
    51
    还好吧,你没见过项目中大量用了泛型,但是到部署的时候才发现,人家服务器 jdk 还是 1.4 的,那个蛋疼啊。
    Mine
    Mine
    May 6, 2017
    52
    好好做,做完你就成大牛了。
    xifangczy
    xifangczy
    May 6, 2017
    53
    用框架习惯了而已,按时间算已经很不错了,还在抱怨啥。去改吧。。
    fhefh
    fhefh
    May 6, 2017
    54
    大量的积分

    我想成了数学的微积分 看了半天 囧
    fhefh
    fhefh
    May 6, 2017
    55
    @shijingshijing #39

    见过一次 想了半天 后来我问人家 这啥意思 人家说 抱歉 忘记把字段字典 EXCEL 发你了

    我。。。
    konakona
    konakona
    May 6, 2017
    56
    @danhahaha echo+table 是最痛苦的...
    xyjtou
    xyjtou
    May 6, 2017 via Android
    57
    那位上古程序员难道已经仙逝?最好的办法,如果上古人士还健在!请一天的咨询费用,让人家来给你理理,回忆一下当年的设计思路,否则猜他人的思路是非常痛苦的事情,消耗的时间也更多。
    Lonely
    Lonely
    May 6, 2017
    58
    真是矫情
    murmur
    murmur
    May 6, 2017
    59
    ecshop 还不是这个路子 连 oom 都没有一水的 sql 拼接
    当年愣是魔改了 N 多新功能上去
    pengbo37877
    pengbo37877
    May 6, 2017
    60
    只要数据库在,重新写
    yankbytes
    yankbytes
    May 7, 2017
    61
    没怎么接触过前端的知识但是感觉可以先把逻辑分离?管数据的管数据,管 UI 的管 UI。不知道 js 在项目里主要是做啥,如果是实时动态显示的话考虑下转 angular 或者 react 框架? php 部分用来和数据库交互的部分就先别动啦~遇上重构的项目真的觉得心累。。。
    GoBeyond
    GoBeyond
    May 7, 2017 via Android
    62
    如果只是想保稳就不要动这种东西
    johnny23
    johnny23
    May 7, 2017 via iPhone
    63
    就是说 删除一个注释系统就跑不起来系列嘛 哈哈哈哈哈
    danhahaha
    danhahaha
    OP
    May 7, 2017
    64
    @johnny23 问题是他妹的连注释都没有啊
    danhahaha
    danhahaha
    OP
    May 7, 2017
    65
    代码还全部左对齐,感觉是故意的
    580a388da131
    580a388da131
    May 7, 2017
    66
    我的初学项目就是一大堆的 echo 定界符
    huobazi
    huobazi
    May 7, 2017 via iPhone
    67
    怕啥 我还维护过扩展名 php3 的……
    ychongsaytc
    ychongsaytc
    May 8, 2017 via iPhone
    68
    浴火,重生。
    msg7086
    msg7086
    May 8, 2017
    69
    不要多想,直接开工干就是了,读代码写代码,反正按时间收费,你慌什么。
    gowk
    gowk
    May 8, 2017
    70
    rewrite it
    allgy
    allgy
    May 8, 2017
    71
    @gyorou 坑定是 C 转过来的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1493 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 335ms · UTC 14:54 · PVG 22:54 · LAX 06:54 · JFK 09:54
    ♥ Do have faith in what you're doing.