1
ben548 2015-12-18 16:52:59 +08:00
确实如此,深有体会, php 没有什么强制性的规范,代码比较难以阅读和维护,不同程序员就连命名规范、代码风格都有很大的差别
|
2
odirus 2015-12-18 16:55:09 +08:00
无论哪种语言都会存在这个问题,根本原因是人、团队。
|
3
GuangXiN 2015-12-18 16:59:43 +08:00
语言把强制规范定得再完善,也挡不住 low b 写出烂代码
|
4
Scholer 2015-12-18 17:05:12 +08:00
|
5
simo 2015-12-18 17:09:14 +08:00
任何语言都有这个问题
你说的问题可能原因: php 门槛低、从业者基数大,被你捉到概率大。 |
6
Zzzzzzzzz 2015-12-18 17:13:38 +08:00 1
现在已经好很多了, 国内最早搞 php 的一批人很少有科班出身的.
"不要用 class, 因为 class 比 function 性能烂." "copy+paste 改改比封装进函数性能好" "不要用模板引擎, 这样性能烂." "获取时间不要用 time(), 用$_SERVER['REQUEST_TIME']" "别用新版本的语言特性, 部署的虚拟主机 php 版本比较旧" 能想象这是 10 多年前国内 php 社区的开发主流思想么? 再加上 php 官方的包管理 pear 没什么存在感, 当时代码托管地也就数 sf 了, 管理三方库基本靠去各开源程序官网下载, 或者去 phpclasses 和一些私人 blog copy+paste, 版本控制也很少有人用, 维护老代码基本就是噩梦. |
7
knightdf 2015-12-18 17:23:27 +08:00
哈哈哈,哪个 php 代码不丑?
|
9
Pastsong 2015-12-18 17:28:59 +08:00
php 就是那种不用框架和设计模式,可以写得非常丑的语言
|
10
quix 2015-12-18 17:29:57 +08:00
哪有不丑的 php, 来个不丑的看看?
|
11
laucie 2015-12-18 17:31:03 +08:00
自黑-->>群黑 php
|
12
neilwong 2015-12-18 17:40:43 +08:00
github.com 上 stars 前三的 php 框架拿来用呗,又没上升到架构那个层次,还是用现成框架比较好
|
14
young 2015-12-18 18:15:39 +08:00
人的问题, 这还用说吗
|
15
movtoy 2015-12-18 18:17:15 +08:00 3
@Zzzzzzzzz
因为 php 卖的最火的一本书: PHP 和 MySQL.Web 开发(第 4 版),最新的还是 09 年的。书里的第一个大型案例还是 10 年前的,封装几个函数,把页面输出都写在函数里。 写代码这种东西。就跟大学生就跟找女朋友一样,每个人都要求找校花,那么 99%的大学生都不会有性经验了。 我鼓励大学生先找个能用的!积累经验(当然不是专指性经验),不然即使你以后找到校花级别的,你也会因为(相处)经验不丰富而被甩掉。 写代码,一开始就要求类的设计,模式、继承、接口这些,可能你学了 n 年都学不会完美的设计。。如果淘宝一开始就要求多好,现在马云还家空想呢。 要接受不完美,什么东西都是渐进的,一开始不要想太多高大上! |
16
LINAICAI 2015-12-18 18:19:24 +08:00
php 算是门槛最低的,所以连我这种写客户端的人都会写的,能有多高的水平?
话说,基本上所有语言都有这种现象吧,这方面,公司不做规范,那你就要从招人方面入手~ |
17
GeekGao 2015-12-18 18:57:51 +08:00
看看 facebook 开源的 PHP 项目,其实还是看人
|
18
chinvo 2015-12-18 21:12:49 +08:00
我感觉楼主这个地图炮放的挺好
|
19
yxzblue 2015-12-18 21:14:07 +08:00
看看 Yii 框架,其实还是看人
|
20
woailuosj 2015-12-18 21:19:25 +08:00
同感,总觉着 php 代码欠缺一定的约定,导致代码层次不齐,很是 low
|
21
whatisnew 2015-12-18 21:59:49 +08:00
@Zzzzzzzzz 我觉得这个列表里边很多说的都有道理,比如 time() 比 $_SERVER['REQUEST_TIME'] 慢
|
22
chinvo 2015-12-18 22:09:36 +08:00
@whatisnew 这点是必然的,因为一个是调用函数时去读取当前时间,一个是从数组读取用户请求页面时的时间。
虽然列表里面很多都有道理,但是在现在看来,这点性能的牺牲所带来的其他方面的进步要远比性能成本突出。 比如某著名 PT 程序,早期版本乱得一塌糊涂,简直没法看,改了几次功能,重构的心都有了。 不过列表中所列出的“烂”的东西,用的好的话也是可以提升性能的。 回到楼主的话题,代码丑陋还是因为人的原因,我看到的不少 C#和 JAVA 的代码也很丑(当然,我不得不承认 C#和 java 一般格式化比较统一,但是不关注格式化,但看函数名、方法名、变量名还有逻辑,仍旧有不少十分丑的代码存在) |
23
whatisnew 2015-12-18 22:15:03 +08:00
@chinvo $_SERVER 是一个全局变量;
我只所以说这个列表里很多说的的有道理,是因为从单纯性质的角度上来说。 关于代码烂不烂要看什么样的业务需求什么样的应用场景什么样的解决方案。 我就想打印一个用户每一次请求的时间,我 tm 还要讨论一下设计模式吗 |
25
aksoft 2015-12-18 22:25:23 +08:00
把自己的亮出来看看
|
26
ooh 2015-12-18 22:37:26 +08:00
不知 lz 现在写 PHP 代码是否已经遵守 PSR 规范,是否会用 PHPMD 来检查自己的代码。
|
28
wdhwg001 2015-12-19 01:14:16 +08:00 via iPhone
我一直不觉得那些古老的最佳实践会让代码丑,即使连“函数名影响 hash 性能”这样的要求都遵守的话也依旧能写的出人类可以看懂的代码的。
因为 php 本就是这样神奇的语言啊。 php 连它自己的函数名都难以记忆,还能让人对这玩意有什么期待… |
29
xiaozi 2015-12-19 01:15:38 +08:00
你是通过换工作接触了几家吗?
|
30
ajleo 2015-12-19 07:07:15 +08:00 1
@movtoy 《 PHP 和 MySQL.Web 开发(第 4 版)》这书简直烂到家了,国内 PHP 论坛还在推荐。我上年开始写 PHP 的时候特意托家人从国内带来中文版,然后看了没四分之一就看不下去。这都该进博物馆的玩意还被人推崇着,看这个写出来的代码都 Deprecated 了。
|
31
iugo 2015-12-19 10:38:23 +08:00
@Zzzzzzzzz 现在和以前大不同了. 包管理器 Composer 已经比较流行, 有些人在用 Git 管理版本, 也见到其他公司用 SVN 的. 一些工具如 Sublime Text 下的 phpfmt 也让代码规范 PSR-2 也很容易达成.
总之, 现在写 PHP 可以好好写的. |
32
eoo 2015-12-19 10:54:02 +08:00 via Android
我大 POP 语言即将出世,这门语言就是用来替代 PHP 而生的,完全没有缺点,集各大编程语言优点,抛各大编程语言缺点,全地球最牛逼的编程语言,你值得 yongyou 。
|
33
jhdxr 2015-12-19 11:30:14 +08:00
@Zzzzzzzzz 坦白说,你贴出来的这几条建议,每一条都是“正确”的。我这儿所说的正确的意思是,在大概 2~3 年前,我自己进行过测试,这些话说的都没错,例如 copy+paste 的确真的比封装函数快(因为函数调用有额外开销)
所以我觉得不是说这些话本身有问题,但是这种“优化”的建议是否适用还是要看场景,而且我个人觉得在绝大多数场景下,都还不至于要考虑到这种程度的性能优化,更何况这其中很多都是极其牺牲代码可读性的 |
35
Liir 2015-12-19 16:30:26 +08:00
php 就是下里巴人嘛,至于上面有些人说的不要使用新版本特性, php5 刚出来那会这里应该有很多人还没有代码美与丑的观念呢吧。
|
36
likezun 2015-12-20 15:28:36 +08:00
PHP 不用框架可以高速写出很多应用,解决适合他的应用场景。小型项目代码乱,也是有他的原因的,大型项目为何不提? 其他语言应用通常是由框架实现, php 有各种实现不同场景的框架,小中大甚至不用框架,代码丑乱?你们知道 symfony 吗!
|
37
MrZephyrus 2015-12-20 16:20:23 +08:00
@odirus 说得对
|