接手了一个老项目,随便打开一个文件就是一堆报错警告,使用未定义变量,创建未定义类的对象,把非静态方法当静态方法用,创建对象不给构造方法传参,模拟一次登入请求就能输出错误日志,看得我目瞪口呆。
这样的代码也能在线上跑起来,支持一家公司的业务发展,PHP5 真是太强了。
1
wukongkong 2021-12-18 23:42:56 +08:00
以前很多代码都这样吧~
如果没有 ts ,js 也是一样的处境,特别是一些新手的代码。 现在带项目,不写 ts ,很多东西完全没法控制。 代码 review 太痛苦了,给自己找不自在。 |
2
zehua 2021-12-18 23:44:39 +08:00 via iPhone
能跑就行
|
3
youthfire 2021-12-18 23:53:04 +08:00 via iPhone 2
其实很多远古程序的实现,尽管从现在看毫无规范性可言,但往往充满了很多智慧,技术的实现借助于各种“旁门左道”,最妖的是稳定无 bug ,因为已经被打磨太多次了
|
4
0ZXYDDu796nVCFxq 2021-12-19 00:12:46 +08:00 3
代码和前开发者都能跑,看起来不错了
|
5
WriteCloser 2021-12-19 00:20:58 +08:00 1
PHP 哪有这多心智负担,错误级别调高一点眼不见心不烦
|
6
qeqv 2021-12-19 02:24:51 +08:00
生产环境关掉报错呗,开发环境屏蔽掉 E_NOTICE E_DEPRECATED E_WARNING
|
7
WebKit 2021-12-19 02:50:06 +08:00 via Android
印象里 php 难道不是一个动态类型的语言吗?跟 js 一样。变量随用随申请吗?
感觉你这跟 2021 年指责当年诺基亚死磕 wp 一样 |
8
dcoder 2021-12-19 03:42:02 +08:00
再怎么烂的东西,只要肯堆人堆时间反复测试修理,总能在 prod 上跑起来.
接手这种代码,就尽量不要改... LOL |
9
Kylin30 2021-12-19 04:19:26 +08:00
为了过个好年,建议申请重构。
|
10
2kCS5c0b0ITXE5k2 2021-12-19 04:25:36 +08:00
@Kylin30 申请重构才不能过好年. 出啥问题都让你背锅.XD
|
12
MengiNo 2021-12-19 08:18:46 +08:00 via Android
PHP 就是这样,乱写都可以。有经验的可以给你写的胡里花哨,甚至写成 Java ,没经验的搞个什么 lamp 鼠标点点就能跑。所以说 PHP 开发就是快,不在乎这些有的没的,就算业务模糊也可以很 hack 的去魔改减少改动。
|
13
lyz1990 2021-12-19 08:57:43 +08:00 via Android
能支撑业务挣到钱才是关键
|
14
loginv2 2021-12-19 09:18:12 +08:00
最强的是这个代码迁移到 php7 大部分是不需要改动的写的好的项目甚至不需要改
|
15
lifeintools 2021-12-19 09:21:54 +08:00
PHP5 时代 基本就是能跑就行~ 后面慢慢越来越严格 框架也越来越规范。。逐渐 java 化
|
16
512357301 2021-12-19 09:40:52 +08:00 via Android
php 变量不是可以直接赋值的吗,需要定义吗,js 我知道有 var/let 可以定义变量,PHP 有吗或者说需要吗
|
17
richangfan OP @WebKit 他这个使用未定义变量错误是调用函数时的参数是一个未定义变量
|
18
maomaosang 2021-12-19 09:56:12 +08:00 via Android
以前老版本的 dedecms (大概是 5.1 ?),你如果把 notice 报错打开,会发现加载个页面满屏都是报错。但是不妨碍它成为中国站点数最多的开源 cms 。
以前很多 phper 的做法就是关掉 notice 来编程,他们以为语言特性就是这样(比如可以动态调用静态方法)的。我还遇到过程序员振振有词跟我说可以直接调用 array 中不存在的 key ,“把 notice 关掉就可以了”。 |
19
code4you 2021-12-19 10:46:50 +08:00
能让你挣钱的语言 就是好语言 😁
PHP5 算啥 用 asp 、vb 挣钱的都有😏 |
21
MrBrother 2021-12-19 14:24:35 +08:00 via iPhone
|
24
learningman 2021-12-20 10:20:48 +08:00
@DOLLOR #21 java 的 var 是 C++的 auto ,js 淘汰 var 是因为全局变量危害太大,也没说不让你用
|