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

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

本周工作日的某一天,

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

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

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

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

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

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

7122 次点击
所在节点    程序员
75 条回复
lithiumii
2022-07-11 00:15:39 +08:00
可能是语言的问题,假如是 Python ,大家就把这种无以名状的好称为 Pythonic
haoliang
2022-07-11 00:25:54 +08:00
不吧,pythonic 类似于 idomatic ; python 这边对标的有 for humans™
LeeReamond
2022-07-11 01:16:41 +08:00
@lithiumii 感觉上 python 式一般强调的是表述上的短,或者表述上接近自然语言,通常来说达到这个标准了也就优雅了,但是也存在过分追求精简而导致可读性变差的情况,导致不优雅,所以优雅与 pythonic 应该不是同等含义
jay4497
2022-07-11 09:03:54 +08:00
就是 好 的代用词吧,就好比我只会说牛逼,词汇多的人就会用更好听的词,不至于这么较真的吧。。。
panlatent
2022-07-11 09:07:38 +08:00
说优雅倒也没啥毛病,在 Laravel 刚到来 /火起来的那阵,它开发体验对比其他 PHP 框架确实有明显的改善。

现在优雅、现代、XXX 哲学,这些词都被用烂了。但 “现代” PHP 就是比曾经的 PHP 更规范、更工程化,更注重开发体验。
james122333
2022-07-11 09:29:51 +08:00
@jay4497
那应该直接说好 说的高大上却用起来绑手绑脚叫优雅...

@panlatent
php 开发体验一直以来都不错 胡写就当我没讲 自干一个框架是很快的事情 新版函数有类型判断就更不用说了
panlatent
2022-07-11 09:34:41 +08:00
@james122333 那可能对开发体验的判定标准不一样
chouqiu
2022-07-11 10:33:49 +08:00
应该就是:可读性、模块化、易维护
iamzuoxinyu
2022-07-11 11:09:47 +08:00
Laravel 设计灵感是源于 Ruby on Rails 的,放在它出生的时代,不论是『约定大于配置』的思想,还是 API 设计、命名上,确实是摆脱了 PHP 很多糟糕的东西,另外对 Composer 的生态也有挺大的推动。说优雅也不算过分,只是代价就是出错就是 20+层的调用栈。

另外一个逸闻:可以看 Laravel 源码的注释,这个作者有强迫症,一定会把注释结尾写成阶梯递减的形状…

但不管怎样也改变不了 PHP 的设计是坨屎的本质。Laravel 所作的一切都只是让这坨闻起来不那么臭。
seth19960929
2022-07-11 11:17:43 +08:00
优雅具体意思:(指物)优美雅致
用了三年+ Laravel, 我觉得主要体现在这几点(哈姆雷特理解法)
1. 工程化的目录设计(君不知以前 PHP 有多随意, 其它语言也是, 除了恶霸 Java)
2. 代码, 语义 API 设计, PHP 原生有很多函数为了向下兼容, 导致难以理解, 特别是参数位置等等
3. 开发体验, 你写代码的时候用起来像是一位作家(优化的作家)
4. 文档 (用过很多 Golang 的框架, 在文档这一方面, 真的是用起来让人头疼, 只管代码进步, 不管文档的进步)
seth19960929
2022-07-11 11:19:48 +08:00
@iamzuoxinyu 哈哈哈, 这个阶梯注释.
public function registerFactory()
{
$this->app->singleton('view', function ($app) {
// Next we need to grab the engine resolver instance that will be used by the
// environment. The resolver will be used by an environment to get each of
// the various engine implementations such as plain PHP or Blade engine.
$resolver = $app['view.engine.resolver'];

$finder = $app['view.finder'];

$factory = $this->createFactory($resolver, $finder, $app['events']);

// We will also set the container instance on this view environment since the
// view composers may be classes registered in the container, which allows
// for great testable, flexible composers for the application developer.
$factory->setContainer($app);

$factory->share('app', $app);

return $factory;
});
}
seth19960929
2022-07-11 11:20:06 +08:00
一个方法两个阶梯
maddot
2022-07-11 11:34:51 +08:00
为了吐槽而吐槽
THESDZ
2022-07-11 11:41:07 +08:00
个人理解的优雅就是, 简洁高效,且可读性强。
THESDZ
2022-07-11 11:45:37 +08:00
@THESDZ # 34 大概翻译一下,就是
1.代码整洁,没有多余的部分,例如 userService.get(id)而不是 userService.getByID(); userService.findByName(name) 而不是 userService.findByUserName(username)
2.小而美,比如 findByName 和 findByCode 不会耦合成一个
3.设计不会反人类(即,一眼看上去就知道写的啥,符合业界主流的标准,比如 GET xxx/{id} DELETE xxx/{id})

以上纯属个人理解。
wonderfulcxm
2022-07-11 11:45:59 +08:00
都是噱头,就像吹 go 言必心智负担低,听得都麻木了…
james122333
2022-07-11 12:01:17 +08:00
@panlatent
你有编程思想加上 php 的易用写的就很畅快了 laravel 说实话那一堆东西你自己实现都可以更简单效能更高

至于楼上一堆说有多优雅(听起来是认为有规范就是优雅 然而哪个框架没规范...) 文档多好(你写 php 只要有 php 官方文档就可以写了 发行版甚至有打包 想实现什么就实现什么)
就...
tabris17
2022-07-11 12:02:35 +08:00
优雅就是可以少写代码
jaggle
2022-07-11 12:26:06 +08:00
@iamzuoxinyu
@seth19960929 这个家伙还把命名空间按长度从短到长排序,要是没有 ide 优化导入,我觉得这不应该是人应该干的事
seth19960929
2022-07-11 12:36:47 +08:00
@james122333

1. 有规范也不一样. 我自己写的框架, 规范能和一个社区或者成熟的比吗.
2. PHP 那个叫做函数 API, 别人的是使用手册(所以对应的应该是 PHP 入门教学等等之类的)
3. 自己实现更加简单的? 这个真的无话可说. 别人那个代码都是白写的了.

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

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

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

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

© 2021 V2EX