V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mhycy
V2EX  ›  PHP

这些年 Web 领域新技术/框架/库层出不穷,但部分讨论帖有一种脱离了业务的感觉,这是我理解出现了偏差么?

  •  
  •   mhycy · 2016-10-14 11:14:49 +08:00 · 2923 次点击
    这是一个创建于 2980 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这些年 Web 领域新技术 /框架 /库层出不穷,但有部分讨论帖脱离具体的业务场景讨论问题。
    例如今天的招聘广告贴: https://www.v2ex.com/t/312651

    这给人一种面向简历开发的感觉。这是我的理解出现偏差还是别的原因造成的?
    12 条回复    2016-10-19 16:45:22 +08:00
    q397064399
        1
    q397064399  
       2016-10-14 11:53:14 +08:00   ❤️ 2
    因为你没搞过 Java ,搞过 Java 的人都知道, MVC ORM DI AOP XXX 这些都是 Java 业界玩剩下的东西,

    PHP5 才开始完全支持 OO

    Java 自从 1998 年发布 JavaEE 规范开始,模块化 分层解耦 就根植于 Java 的 web 开发当中,而 Java 一开始就是一门
    非常好的 OO 语言,而且 JVM 运行时支持反射 以及 代理,为框架 DI AOP 提供了支持

    PHP5 才开始完全支持 OO

    从 SpringMVC 以及 xBatis 流行开始, Java 就从 JavaEE 重型框架中摆脱出来了,开始走轻量化之路 加上 Java 社区原本大量的开源后端模块

    然而 PHP5 才开始完全支持 OO
    wyntergreg
        2
    wyntergreg  
       2016-10-14 12:26:39 +08:00
    @q397064399 Java 自从 1998 年发布 JavaEE 规范开始,模块化 分层解耦 就根植于 Java 的 web 开发当中

    是 JavaEE
    mhycy
        3
    mhycy  
    OP
       2016-10-14 12:49:02 +08:00
    @q397064399

    然而我的疑惑并不在 OO ,而是这类文章经常脱离业务谈论各种框架
    就像 ORM ,并不是所有场景都适合用 ORM ,但这个帖子直接认为 2016 年没人写 SQL
    jhdxr
        4
    jhdxr  
       2016-10-14 14:58:37 +08:00
    @q397064399 然而 php5 也是 2005 年发布的,也已经 10+年了,别说的好像刚发布一样。另外国内的 php 环境至少落后国际上一个时代,看看 composer 在国内和国际的普及程度就知道了。
    顺便说一句,那个帖子里提到的很多东西,我觉得更多的是借鉴 ruby (更准确的说, ror )而非 java 。


    @mhycy 绝大多数业务场景还不需要考虑运行效率,而 ORM 在那些场景下能够大幅提升开发效率。
    mhycy
        5
    mhycy  
    OP
       2016-10-14 15:21:20 +08:00
    @jhdxr
    然而我也没提到运行效率。
    如果是面对复杂的业务系统的时候(各种 ERP ), SQL 能比 ORM 有更高的灵活性。
    jhdxr
        6
    jhdxr  
       2016-10-14 23:25:28 +08:00
    @mhycy 我觉得需要些复杂 sql 的时候,一般来说首先就不会选择 MySQL 了。。。然后跟着也不大会考虑 PHP 了。。。(国内 php+pgsql 的组合几乎没见过,日本那倒不少)
    neoblackcap
        7
    neoblackcap  
       2016-10-15 00:23:40 +08:00
    @mhycy 但是 SQL 有更高的维护成本,新人更难加入开发的队伍, Java 的出现就是为了让萌新都能成为干活的队友出现的。绝大多数的所谓灵活性都是为了一时自己开发爽。一个系统从业务逻辑以及架构设计上调整去适配 ORM 我觉得才是正路,因为 ORM 的学习成本比 SQL 低,那么就代表要成为你队友的门槛低,工作能通过堆实习生解决的问题都不是问题。
    当然你的队友都很强,你们都能写出壮健性能高简洁明了的代码,那么当我没说。
    q397064399
        8
    q397064399  
       2016-10-15 08:27:13 +08:00
    @mhycy 你可以考虑轻量级 ORM 框架 xBatis 就是
    q397064399
        9
    q397064399  
       2016-10-15 08:31:03 +08:00
    @neoblackcap 有点时候我有点怀疑 MyBatis , SQL 几乎全部手写,当然也有自动生成工具,全手写的话,还有意义么?
    mhycy
        10
    mhycy  
    OP
       2016-10-15 12:05:30 +08:00
    @jhdxr 看来你们都是面对场景并不复杂的互联网应用啊,对于企业内部的一些表单型的数据,很多时候除了 SQL 以外没别的建库形式可以替代的。

    @neoblackcap 请指教 SQL 更高的维护成本从何而来。事实上在使用过程中 SQL 会抽象成一个个 API 再进行调用的。
    (某些数据多表关联写入的情况下必定要抽象出一个 API 进行处理)
    写 SQL 可不意味着是业务内直接写 SQL 语句,也不意味着是拼接 SQL 语句,查询生成还是要有的。
    neoblackcap
        11
    neoblackcap  
       2016-10-15 20:17:44 +08:00
    @mhycy 我说的 SQL 维护成本高就是指新人需要懂 SQL ,我更加指的是裸 SQL 。
    你说的查询生成在我看来本质上就是 ORM ,你这样用没有问题,只不过你有没有试过 benchmark ?性能有没有提高?文档跟其他的 ORM 框架比起来怎么样?总不可能每个接触这套东西的人都来人肉问你吧?就算你愿意回答,你真有这么多时间吗?这些在我看来都是维护成本,至于为什么说裸 SQL 维护成本更大呢?原因是新人不用去了解各个数据库的 SQL 实现,他也不用去思考你这套东西跟已有部件的组合。
    同时不要神化 SQL , SQL 能解决很多问题,但是用程序一样能解决,比如外键什么的都能自己进行检查来约束,数据库完全可以当成一个存储引擎外加+SQL 接口的组件来使用
    我并不是排斥 SQL ,任何的事情都是要看环境的,你们适合的不一定适合其他人,可能你们本身团队的人员就比较强,我讨论的只是普遍情况下 ORM 可以解决大多数问题,而且很多问题可以通过软件设计来配合使用纯 ORM 的方式进行开发。
    fengerzh
        12
    fengerzh  
       2016-10-19 16:45:22 +08:00
    ORM 不用刻意使用啊,如果你用了 Yii 框架,就自然而然用上 ORM 了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4922 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:05 · PVG 16:05 · LAX 00:05 · JFK 03:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.