起因是与同事的一次争执(个人单方面挑起)。
简单说下现场情况:
PHP 开发,Laravel 框架。
第一件事:
一同事不满我于每次使用 Redis 都要先 Redis::connection();
他认为这次 connection() 会单独开一个 Redis 链接,性能损耗大。
而我认为直接使用魔术方法没有代码提示且 IDE 会标黄,看着不爽~
最后给他看 Laravel 源码,证明调用魔术方法本身也是先 connection() 然后调用方法。
而且证明 connection() 内并不一定会新创建链接。
事实上,Model 我也是先 query() 后 where()。
(这个我专门查过 Model 的源代码,都一样的,但 Redis 确实没查过。)
// 我的代码
Redis::connection()->pipeline();
// 他提议的
Redis::pipeline();
// 实际上 Redis::pipeline(); 的实现方法是
$this->connection()->{$method}(...$parameters);
第二件事:
我使用观察者来在订单 status 变更时记录到日志。
而他认为每次修改数据库都会触发观察者,性能损耗大。
而我主张,为了减轻服务器损耗,而提高人员的开发成本,得不偿失。
我的结论:
既然使用框架了,那为何不充分利用他便捷的特性呢?
追求极致的性能为何还要使用笨重的框架,直接原生手写代码就好了呀。
不知道是不是我的主张是错误的,求打醒。
========
不过我的脾气是真不好,当场就开怼了,要改,要改...
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.