
最近接了个项目,需求很简单,对方也要求低,薪酬不错,所以就爽快的答应了
但是看到代码那一刻才明白,我他妈的是掉到坑里了
怎么说呢,我大一时候学的 php,当然开始时候是用原生 php,没觉得不妥,慢慢的做了 1 年,使用框架,才知道原生真的很难拓展,修改,现在用习惯了 laravel,symfony 这种现代框架,看到原生真的是想哭啊。
感觉是另外一种语言。
关键是这套系统全是 sql 原生查询啊,根目录全是 php 文件啊,html 全是表格嵌套啊,js 全是自己写的啊,居然还用了 git 版本控制,但是没什么鸟用,大概只是后来的接盘侠提交了不到 20 个页面,其他的估计就只有这位上古程序员知道什么是什么了,最最关键的是这位技术记性,逻辑极其牛逼,项目涉及到大量的积分,支付结算,慢慢的逻辑
我爱 php,知道很多人说 php 不好,但是我觉得没什么,因为 php 上手快,出活快,赚钱也快,但是看到这个,我真的不知道该怎么办了,活是肯定要继续的,客户比较好,按时间付费,求各位大神有没有什么办法,或者简单框架可以再原生基础上快速重构,或者改版,或者什么的容易结合使用的?
1 viko16 2017-05-06 09:37:31 +08:00 via Android 退订跑路! |
2 gouchaoer 2017-05-06 09:41:19 +08:00 via Android 你 laravel 都能学会,单页肯定没问题 |
3 U7Q5tLAex2FI0o0g 2017-05-06 09:41:38 +08:00 如果这个项目原先的功能不多不复杂,直接整个项目重构好了,你后续新增功能也方便 如果之前已经非常复杂了,还是不要动,毕竟如果你对之前的功能逻辑不清楚的情况下贸然重构。。。 取舍吧 |
5 gyorou 2017-05-06 09:47:16 +08:00 我之前接收过的上古 php 项目,一个 http 的 request 从 socket 的绑定开始写。 |
6 kn007 2017-05-06 09:51:35 +08:00 这个只能花时间。没别的办法。很尴尬。 |
7 ChopMoun 2017-05-06 09:51:40 +08:00 你也说了改的是前端。只是比较繁琐罢了,时间上的问题,再说客户是按照时间付费,这有什么好解脱的? |
8 NonClockworkChen 2017-05-06 09:52:42 +08:00 就是说原作者是一位 php 的上古大拿吗- - |
9 em70 2017-05-06 09:53:58 +08:00 via Android 多花时间多收钱,有什么不好 |
10 tabris17 2017-05-06 09:54:05 +08:00 你现在需要产品说明书 |
11 laoyuan 2017-05-06 10:00:51 +08:00 捂脸,我现在写的还是这样的上古代码,各种 mysql_fetch_assoc,以及 echo 出来的 JS。。 去年想用 Laravel 重写来着,历史问题太多愣是没写下去 |
12 laoyuan 2017-05-06 10:02:20 +08:00 尴尬之处在于,代码没有完全重构之前,加功能还得继续上古 |
13 Felldeadbird 2017-05-06 10:03:14 +08:00 吐吐槽就好了,该怎样做还是要做。重构就免了,因为你的收入根本不足够你去重构如此项目。 如果要改善此项目。1:在新功能中引入新架构开发,同时要确保原有的函数、方法可以调用。2.修改旧功能,看开发时间而定,如果很耗时较长,直接在原架构下开发。反之参考第一点。 对于老旧项目,除非老板肯定重构,否则不要一步到位。这需要新旧架构通存过渡期。 |
14 reus 2017-05-06 10:04:08 +08:00 无能。 |
15 dsg001 2017-05-06 10:12:13 +08:00 画重点:需求很简单,对方也要求低,客户比较好,按时间付费; 那就慢慢来呗,客户又没有要求重构 |
18 iRiven 2017-05-06 10:18:45 +08:00 via Android 原生就不好吗 |
20 zjqzxc 2017-05-06 10:24:37 +08:00 不要重构,重构坑更多 慢慢改吧。。没有太好的方法 |
21 jiehuangwei 2017-05-06 10:34:13 +08:00 缝缝补补又一年 |
22 yumijie 2017-05-06 10:37:52 +08:00 @jiehuangwei 赞同 |
23 dsg001 2017-05-06 10:38:04 +08:00 @danhahaha 对方代码应该是经过漫长时间考验,比较稳定可靠的,如果重构能保证提高效率而且没坑吗?如果只是因为洁癖就去重构客户代码,这才是坑吧 |
24 Mutoo 2017-05-06 10:41:29 +08:00 不要重构,要重写。 |
25 QQ2171775959 2017-05-06 10:51:18 +08:00 希望您能静下心来,好好思考一下,也许就会发现并没有那么难的,抗过了这一波后,又是一个英雄好汉。 |
26 wangjie 2017-05-06 10:58:02 +08:00 我接手过最烂的代码还不过是一份基于 tp3 的代码 |
27 sagaxu 2017-05-06 11:01:38 +08:00 @gouchaoer 封装得当的代码,一个功能可能调用了 10 个业务方法,理想的情况下只要看一下十几个名字就了解个大概了,最差情况是名字不好,得一层层的人肉过一遍代码。 封装不好的代码,一个功能几千行代码全放一起,call stack 是比较浅,但是要读更多的细节代码,还很容易陷入复制粘贴的泥淖,到处长得相似却又并不完全一样的代码是很头疼的。 封装可以把实现细节和意图隔离起来,维护代码的时候,我们更多关注意图之间的串联,而非实现细节。 |
29 ferran 2017-05-06 11:07:05 +08:00 从接盘到跑路 |
30 hzw94 2017-05-06 11:09:15 +08:00 无解的代码 |
31 hellpeng 2017-05-06 11:15:46 +08:00 删除工程, 新建工程 |
32 wolfan 2017-05-06 11:23:30 +08:00 新建项目申请项目资金。 |
33 fuxkcsdn 2017-05-06 11:37:23 +08:00 via iPhone 都知道是上古项目了,还能要求啥? 之前公司里还有个项目是 PHP 4 时代写的呢。 这种上古项目修改起前端感觉反而更方便,基本上一个页面就是一个 php 文件,URL 就已经指名了 个人最无法接受的是代码格式混乱,看代码时总有格式化代码的冲动(一格式化起来就没完没了了) |
34 visonme 2017-05-06 11:40:57 +08:00 在原生 php 工程基础上用框架不可取,最近的一个项目就是类似情况,后面果断放弃了,只能坚持原生或者框架重写。 原生 php 工程如果代码结构好点,其实修改起来还是很容易的。 |
35 PythonAnswer 2017-05-06 11:44:37 +08:00 提取表格,生成 api。 |
36 isbase PRO 这次放弃了,以后还会放弃的 |
37 designer 2017-05-06 12:31:20 +08:00 突然钦佩上了上古大拿 |
38 Meimei 2017-05-06 12:49:47 +08:00 我只有说钦佩,继续努力干 |
39 shijingshijing 2017-05-06 13:07:38 +08:00 |
40 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,操作会很轻松 严格按照这个来的话,有很多代码可以直接复制粘贴修改就行,很节约时间 |
41 jarlyyn 2017-05-06 13:28:03 +08:00 没有说明书的话。 这种代码比基于任何一个框架的都好改。 楼主属于锤子用多了,觉得什么都应该是钉子…… |
42 8355 2017-05-06 13:34:50 +08:00 个人建议你还是把你项目情况跟客户解释清楚 问问客户是否需要重构 如果需要的话你就完全帮忙重写一个项目 直接抛弃掉这个 如果原来的数据库建的还能用就继续用 如果不行就重新洗一下数据开始你的重构吧.. 如果不需要你就继续用传统开发直接写就好了啊. |
43 billlee 2017-05-06 13:35:07 +08:00 你这还好啊,更可怕的是自己造了个没文档的框架。。 |
44 run2 2017-05-06 13:53:00 +08:00 感觉至少要把 view 整合下 不想上 framework 的话直接上 twig 吧( template 引擎) https://twig.sensiolabs.org/ |
45 paullee 2017-05-06 13:56:46 +08:00 via iPhone h |
46 harker 2017-05-06 14:13:51 +08:00 建议在基础上慢慢改吧,只是原生代码生疏了,看熟老古董就好了 |
47 Z1076 2017-05-06 14:56:52 +08:00 我现在就接手了一个这样的项目做二次开发,一个 php 文件,1w8 行,就问你怕不怕。 |
48 Z1076 2017-05-06 14:58:29 +08:00 用 phpstorm 修改这个文件,打开的时候笔电的风扇都跟发动机一样响。真是日了狗... |
49 loserwn 2017-05-06 15:00:39 +08:00 说「上古」我还以为是 PHP3 PHP4 呢。。。中老年程序员(逃 |
50 aksoft 2017-05-06 15:15:41 +08:00 一分钱一分货。。一步一步调试吧。 我也这么干过,至于后来入坑者。。。 |
51 shmilypeter 2017-05-06 15:35:48 +08:00 还好吧,你没见过项目中大量用了泛型,但是到部署的时候才发现,人家服务器 jdk 还是 1.4 的,那个蛋疼啊。 |
52 Mine 2017-05-06 16:39:45 +08:00 好好做,做完你就成大牛了。 |
53 xifangczy 2017-05-06 16:41:29 +08:00 用框架习惯了而已,按时间算已经很不错了,还在抱怨啥。去改吧。。 |
54 fhefh 2017-05-06 17:21:27 +08:00 大量的积分 我想成了数学的微积分 看了半天 |
55 fhefh 2017-05-06 17:23:45 +08:00 |
57 xyjtou 2017-05-06 20:54:54 +08:00 via Android 那位上古程序员难道已经仙逝?最好的办法,如果上古人士还健在!请一天的咨询费用,让人家来给你理理,回忆一下当年的设计思路,否则猜他人的思路是非常痛苦的事情,消耗的时间也更多。 |
58 Lonely 2017-05-06 21:56:38 +08:00 真是矫情 |
59 murmur 217-05-06 21:57:44 +08:00 ecshop 还不是这个路子 连 oom 都没有一水的 sql 拼接 当年愣是魔改了 N 多新功能上去 |
60 pengbo37877 2017-05-06 22:19:42 +08:00 只要数据库在,重新写 |
61 yankbytes 2017-05-07 01:49:42 +08:00 没怎么接触过前端的知识但是感觉可以先把逻辑分离?管数据的管数据,管 UI 的管 UI。不知道 js 在项目里主要是做啥,如果是实时动态显示的话考虑下转 angular 或者 react 框架? php 部分用来和数据库交互的部分就先别动啦~遇上重构的项目真的觉得心累。。。 |
62 GoBeyond 2017-05-07 06:51:36 +08:00 via Android 如果只是想保稳就不要动这种东西 |
63 johnny23 2017-05-07 08:55:52 +08:00 via iPhone 就是说 删除一个注释系统就跑不起来系列嘛 哈哈哈哈哈 |
65 danhahaha OP 代码还全部左对齐,感觉是故意的 |
66 580a388da131 2017-05-07 11:53:10 +08:00 我的初学项目就是一大堆的 echo 定界符 |
67 huobazi 2017-05-07 20:08:06 +08:00 via iPhone 怕啥 我还维护过扩展名 php3 的…… |
68 ychongsaytc 2017-05-08 01:11:30 +08:00 via iPhone 浴火,重生。 |
69 msg7086 2017-05-08 02:50:18 +08:00 不要多想,直接开工干就是了,读代码写代码,反正按时间收费,你慌什么。 |
70 gowk 2017-05-08 11:36:40 +08:00 rewrite it |