吐槽:到底什么是“优雅”? PHP 的新名词真是含义莫名……

2022-07-10 22:07:18 +08:00
 uiosun

本周工作日的某一天,

翻开一篇博客园文章:“……这样写更优雅……”、

打开一篇 Laravel 某个特性的介绍:“……这个框架……以优雅著称……”。

优雅到底是什么?小布尔乔亚?是我漏了什么吗?

去逛 Stackoverflow 、去大佬们的独立博客、去 Github 讨论问题,大家都直接讲“稳定”、“安全”、“性能”、“可读性”、“模块化”……

我记得,Yii2 那时的 Slogan 是 “安全、稳定、高效”,现在竟然给我一种“都在吹优雅”的感觉。

( Ps:上一次给我留下印象的“优雅”,还是小红书里的名媛)

7252 次点击
所在节点    程序员
75 条回复
james122333
2022-07-12 09:39:34 +08:00
@panlatent
很简单 重点在于你了不了解这技术背后的原理 思路清晰的状态下写一个非常快
也不用什么现有的库 因为 php 本身就有 不用 cgi 可以 自写一个实现可以(如楼上说的 scheduler) 很多需要的东西 php 早就提供了 心理有谱就行
设计模式就不用说了 这是类似围棋定石的东西 只是前人根据一些经验总结一些应用范例 不少人会定石也是一蹋糊涂 编程思想是根据框架不同而异 你有条理有规范生出来一个就差不多会有的东西 工程实践那细节了 算法本身与框架关联不大 而且你看了下 laravel 它像是有算法关联嘛... 想太复杂无中心创意思想肯定觉得难
这是大而全思想导致 基本上多数公司用的技能大同小异你简单写一个套用在其他公司基本上是没问题的(尤其对 web 来讲) 如果有额外需求那只是额外实现而已 如果你框架本身就考虑到扩充 那肯定是没问题的 做了好几次完全可行 甚至一些框架没有的功能都可以 你用现有框架思路会解决方案非常局限 甚至解法都烂大街了 看久就会知 至于自写框架当然是为了往后节省时间 因为你想要根据特殊需求解决并且迎合该框架使用逻辑是非常需要思考的 乱解就会与现有屎山一样
seth19960929
2022-07-12 10:29:39 +08:00
我见过不用框架派怎么实现以下功能的:

1. Scheduler
Linux 机器上的 crontab 几十行脚本任务, 写代码的人和运维都懵逼(框架提供统一代码管理定时任务)
2. ORM && 模型关联
Laravel 的 model 我就不多说了, 作者都说过这个 Eloquent 是他最花费时间的地方, 说实话就 PHP 自带的 PDO 就玩玩可以, 毕竟还不够抽象.
模型关联难不难反正我用了好几个 Go 框架, 基本对于这个部分做的不怎么好(非 ORM 框架)
3. Queue && 延时
死循环 Redis (虽然 Laravel 也是这么做的, 但是你自己实现要做到可靠性保证), 高级一点知道用消息队列
4. Cache && Session
这一层相对于比较简单, 当时你要实现多个驱动的, File, Redis, DB
现在的人觉得 Redis 真的很简单, 但是对于一个刚学编程的人, 没有什么比不用任何配置就能用 file 做缓存更实际的了
5. View
对于实现继承视图, 重写视图等等我觉得还是挺好用的功能(自己写内嵌 PHP 到 HTML 就知道多痛苦)

Go 刚出来那会也说什么大道至简之类的话, 不用框架. 后面为了占领 WEB 领域还不是老老实实得有框架, 就原生的那个能做什么.
即使是像 Gin 这种微框架(何况不用框架), 只适合大公司二开, 完全不适合企业级项目开发. 要什么数据库查询自己找库, 要日志自己找, 要个缓存中间件还要自己找, 更何况定时任务, 队列这些一大堆
alexsunxl
2022-07-12 12:06:21 +08:00
@kingjpa 不是,一个 web 框架,拼什么除去性能啊。
不是商业产品只做玩具吗 (捂脸捂脸捂脸)
james122333
2022-07-12 12:07:06 +08:00
@seth19960929
1. 你只要知道 cron 的格式含意你就能做出一个一模一样的东西
2. pdo 已经很方便 我也偏爱 想要物件关联 熟悉反射就可以 field 是 public 也可以不用反射
3. 语言程度可以写个 queue 也不难
4. 这个不讲了
5. php 还有 heredocument 可以不用写内嵌 整一整就很好用

go 的话同上 自己写也不错
seth19960929
2022-07-12 12:34:03 +08:00
不敢多说, 什么都能做出来.
花一个月, 还是一年? 一个月做出来然后用的时候很难用折磨自己吗.
之后接手的人用框架有文档可以看这个方法干什么. 然后用你是只能去摸着石头过河.

我读过计算机组成原理, 那去设计个个芯片. 我也曾熟读世界首富的赚钱理念, 成为下一个首富应该也不难. 我这就去赚钱, 不打扰各位了.
james122333
2022-07-12 12:55:03 +08:00
@seth19960929
技术上不难 基本的一两个礼拜就好了
没人喜欢拿石头砸自己的脚
自己写的不能有文档? 而且你先要求你框架外业务有文档再説 况且单步傻瓜除错没人不会
这是两回事 写框架本来就是力所能及的 不是説首富不是想当就当 这论坛真的一堆奇葩类比
yxx1993
2022-07-12 13:55:46 +08:00
@james122333 "Talk is cheap. Show me the code"
lscexpress
2022-07-12 14:23:32 +08:00
吐槽:到底什么是“安全”? PHP 的新名词真是含义莫名……

( Ps:上一次给我留下印象的“安全”,还是安培保镖里的女网红)
james122333
2022-07-12 15:32:39 +08:00
@yxx1993
已经简易的做过了 并不需要 show 给你看
可不可行自行判断 仰望是进步的阻力
seth19960929
2022-07-12 15:41:24 +08:00
@yxx1993 老哥说得对
@james122333 一两个礼拜你要是能实现这个好用的, 真当人家几百个人开源贡献代码就不如你. v2 的人真的什么不知天高地厚的人都有. 你说你超越作者我都信. 毕竟 v2 大神也有, 但是一说一周超越几百个人花几年做的东西.
@lscexpress 相对于原生 PHP 容易 SQL 注入, csrf, xss 攻击, 而框架有这个支持
james122333
2022-07-12 16:04:15 +08:00
james122333
2022-07-12 16:17:57 +08:00
@seth19960929
我说的是基本的东西 剩下的多花时间都可以完成 效能好好维护 毕竟也不能讲的太死 保守估计 这些框架本来就一堆喷点了 别人也不是做佛心的 肯定不会做的完美 一群人开发跟一个人开发本来就不是一样的 来回沟通要时间 也不是一直都有空閑时间处理 然后可能后面还有人下指导棋 甚至商业考量 blahblahblah
写的好过这些东西不难 大家都往完美迈进那就是内卷
seth19960929
2022-07-12 16:20:19 +08:00
@james122333 得, 既然你这样认为, 我无话可说.
magicdawn
2022-07-12 18:09:38 +08:00
优雅就是站着把钱挣了.
lanlanye
2022-07-12 22:11:33 +08:00
这个形容确实很抽象,一般代表最佳实践 /好的封装 /可读性极高的代码 /或者其他什么东西,比如我就觉得下面这行代码可以用优雅来形容:

3.days.after { do_task }

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

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

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

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

© 2021 V2EX