接触了几家公司的 PHP 代码,发现这些代码真的很丑陋

2015-12-18 16:44:12 +08:00
 szopen
我想大概是因为 PHP ,没有太多强制性规范,加上 PHPer 水平高低不同,以及项目管理人员水平限制,才出现了这么多丑陋的代码

另外大部分PHP程序员还处于或长被动处于改网页阶段,所以水平真的很低
7630 次点击
所在节点    PHP
39 条回复
whatisnew
2015-12-18 21:59:49 +08:00
@Zzzzzzzzz 我觉得这个列表里边很多说的都有道理,比如 time() 比 $_SERVER['REQUEST_TIME'] 慢
chinvo
2015-12-18 22:09:36 +08:00
@whatisnew 这点是必然的,因为一个是调用函数时去读取当前时间,一个是从数组读取用户请求页面时的时间。
虽然列表里面很多都有道理,但是在现在看来,这点性能的牺牲所带来的其他方面的进步要远比性能成本突出。
比如某著名 PT 程序,早期版本乱得一塌糊涂,简直没法看,改了几次功能,重构的心都有了。
不过列表中所列出的“烂”的东西,用的好的话也是可以提升性能的。
回到楼主的话题,代码丑陋还是因为人的原因,我看到的不少 C#和 JAVA 的代码也很丑(当然,我不得不承认 C#和 java 一般格式化比较统一,但是不关注格式化,但看函数名、方法名、变量名还有逻辑,仍旧有不少十分丑的代码存在)
whatisnew
2015-12-18 22:15:03 +08:00
@chinvo $_SERVER 是一个全局变量;

我只所以说这个列表里很多说的的有道理,是因为从单纯性质的角度上来说。
关于代码烂不烂要看什么样的业务需求什么样的应用场景什么样的解决方案。

我就想打印一个用户每一次请求的时间,我 tm 还要讨论一下设计模式吗
msg7086
2015-12-18 22:23:17 +08:00
@chinvo nexusphp 的代码拿到手就想 shift del 。改代码如吃翔…
aksoft
2015-12-18 22:25:23 +08:00
把自己的亮出来看看
ooh
2015-12-18 22:37:26 +08:00
不知 lz 现在写 PHP 代码是否已经遵守 PSR 规范,是否会用 PHPMD 来检查自己的代码。
sheng9632
2015-12-18 23:51:09 +08:00
@movtoy 这个比喻我服
wdhwg001
2015-12-19 01:14:16 +08:00
我一直不觉得那些古老的最佳实践会让代码丑,即使连“函数名影响 hash 性能”这样的要求都遵守的话也依旧能写的出人类可以看懂的代码的。
因为 php 本就是这样神奇的语言啊。 php 连它自己的函数名都难以记忆,还能让人对这玩意有什么期待…
xiaozi
2015-12-19 01:15:38 +08:00
你是通过换工作接触了几家吗?
ajleo
2015-12-19 07:07:15 +08:00
@movtoy 《 PHP 和 MySQL.Web 开发(第 4 版)》这书简直烂到家了,国内 PHP 论坛还在推荐。我上年开始写 PHP 的时候特意托家人从国内带来中文版,然后看了没四分之一就看不下去。这都该进博物馆的玩意还被人推崇着,看这个写出来的代码都 Deprecated 了。
iugo
2015-12-19 10:38:23 +08:00
@Zzzzzzzzz 现在和以前大不同了. 包管理器 Composer 已经比较流行, 有些人在用 Git 管理版本, 也见到其他公司用 SVN 的. 一些工具如 Sublime Text 下的 phpfmt 也让代码规范 PSR-2 也很容易达成.

总之, 现在写 PHP 可以好好写的.
eoo
2015-12-19 10:54:02 +08:00
我大 POP 语言即将出世,这门语言就是用来替代 PHP 而生的,完全没有缺点,集各大编程语言优点,抛各大编程语言缺点,全地球最牛逼的编程语言,你值得 yongyou 。
jhdxr
2015-12-19 11:30:14 +08:00
@Zzzzzzzzz 坦白说,你贴出来的这几条建议,每一条都是“正确”的。我这儿所说的正确的意思是,在大概 2~3 年前,我自己进行过测试,这些话说的都没错,例如 copy+paste 的确真的比封装函数快(因为函数调用有额外开销)

所以我觉得不是说这些话本身有问题,但是这种“优化”的建议是否适用还是要看场景,而且我个人觉得在绝大多数场景下,都还不至于要考虑到这种程度的性能优化,更何况这其中很多都是极其牺牲代码可读性的
hbkdsm
2015-12-19 13:16:14 +08:00
@ajleo 确实啊,大烂书一本。心疼 money
Liir
2015-12-19 16:30:26 +08:00
php 就是下里巴人嘛,至于上面有些人说的不要使用新版本特性, php5 刚出来那会这里应该有很多人还没有代码美与丑的观念呢吧。
likezun
2015-12-20 15:28:36 +08:00
PHP 不用框架可以高速写出很多应用,解决适合他的应用场景。小型项目代码乱,也是有他的原因的,大型项目为何不提? 其他语言应用通常是由框架实现, php 有各种实现不同场景的框架,小中大甚至不用框架,代码丑乱?你们知道 symfony 吗!
MrZephyrus
2015-12-20 16:20:23 +08:00
@odirus 说得对
lenran
2016-01-01 02:15:00 +08:00
@Zzzzzzzzz 不是 class 和 function 的问题,过度封装确实是会牺牲一些性能的
Nixus
2016-01-05 10:14:02 +08:00
@ooh 请教一个问题, phpmd 提示, func accesses the super-global variable $GLOBALS
是在函数中使用了超全局变量了,请问,有什么替代方式?

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

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

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

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

© 2021 V2EX