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

2017-05-06 09:34:44 +08:00
 danhahaha

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

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

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

感觉是另外一种语言。

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

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

9784 次点击
所在节点    程序员
71 条回复
jiehuangwei
2017-05-06 10:34:13 +08:00
缝缝补补又一年
yumijie
2017-05-06 10:37:52 +08:00
@jiehuangwei 赞同
dsg001
2017-05-06 10:38:04 +08:00
@danhahaha 对方代码应该是经过漫长时间考验,比较稳定可靠的,如果重构能保证提高效率而且没坑吗?如果只是因为洁癖就去重构客户代码,这才是坑吧
Mutoo
2017-05-06 10:41:29 +08:00
不要重构,要重写。
QQ2171775959
2017-05-06 10:51:18 +08:00
希望您能静下心来,好好思考一下,也许就会发现并没有那么难的,抗过了这一波后,又是一个英雄好汉。
wangjie
2017-05-06 10:58:02 +08:00
我接手过最烂的代码还不过是一份基于 tp3 的代码
sagaxu
2017-05-06 11:01:38 +08:00
@gouchaoer

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

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

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

原生 php 工程如果代码结构好点,其实修改起来还是很容易的。
PythonAnswer
2017-05-06 11:44:37 +08:00
提取表格,生成 api。
isbase
2017-05-06 12:24:40 +08:00
这次放弃了,以后还会放弃的
designer
2017-05-06 12:31:20 +08:00
突然钦佩上了上古大拿
Meimei
2017-05-06 12:49:47 +08:00
我只有说钦佩,继续努力干
shijingshijing
2017-05-06 13:07:38 +08:00
@sagaxu @danhahaha

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

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

严格按照这个来的话,有很多代码可以直接复制粘贴修改就行,很节约时间

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/359508

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX