V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
johnsneakers
V2EX  ›  问与答

看到有讨论 PHP 框架的,我最近是被新公司的 PHP 代码弄哭了

  •  1
     
  •   johnsneakers · Jun 21, 2014 · 9081 views
    This topic created in 4329 days ago, the information mentioned may be changed or developed.
    之前的一年都在用Yii写网站,越写越喜欢这个框架,代码真的相当优雅。

    不过,自从我到新公司上班这1个月,这代码改的我整个人都不好了。。。。

    启动的index.php代码那叫一个乱,各种require_once,各种 if(defined(XX)) 各种if else 连环套。

    业务逻辑那个叫不忍直视。。。同一个PHP文件,每个方法都有一段一样的代码:验证用户,然后今天看到某个函数什么的800行代码也是大段大段的if else。

    在这里吐下槽是因为,今天实在不爽,改人家写的东西BUG,就问了下这个他写的这个方法怎么老是不对。。同事有点不耐烦就回我:“你怎么不会看代码,看代码啊”。。。当时心中顿时千只草泥马奔腾。

    反思了下,但还是没客观的认识到自己, 以前写OOP的时候,不会常量变量什么的横空出世,至少会包个类抽象下,如这样调 : Class::CONTANT ,这样也方便找啊!! 尼玛现在没事就required 一个文件我还要到处ctrl+F 翻。。。

    现在在新公司我效率极低,每天都是哭晕在厕所的节奏。。。 是框架用多了 我成煞笔了吗。
    Supplement 1  ·  Jun 21, 2014
    我们目前系统对性能要求挺高的,我想吐槽的不是用不用框架,至少要写点OOP的东西吧。或者,谁有PHP好的开源东东用OO方式写的。
    44 replies    2014-06-23 17:52:42 +08:00
    blacktulip
        1
    blacktulip  
       Jun 21, 2014
    跳槽吧,不然你很快就降格到你同事的水平了
    dofaith09
        2
    dofaith09  
       Jun 21, 2014
    我进来现在这个公司也是, 没用任何framework, 所谓的纯PHP 写的, 没有MVC架构, 大量的php html在一个文件混编, 大量的require_once看着就不爽.

    上个月开始我说服老板开始做手机版的, 我重写的后台, 用的codeigniter, 代码看起来舒服多了, 以后直接把主站的后台也用这个.

    之前来这公司之前是印度人写的代码, 可见他们水平也不咋地, 就会吹牛逼.
    johnsneakers
        3
    johnsneakers  
    OP
       Jun 21, 2014
    @blacktulip
    @zyx89513

    暂时不会啊。初步观察我的同事信仰函数式编程喜欢简单暴力的做法。。不过这里服务器上面的架构还不错。至少,他们服务器玩的比我牛逼,还有些对底层性能什么的也很有研究,我就是搞不懂为什么代码写那么烂
    blacktulip
        4
    blacktulip  
       Jun 21, 2014
    @johnsneakers 额,其实我不懂 PHP ,PHP 到底是不是 OO 的?
    panlilu
        5
    panlilu  
       Jun 21, 2014 via iPhone   ❤️ 2
    php不用框架也是能写出好代码的,不同的代码风格而已,各有利弊。
    em70
        6
    em70  
       Jun 21, 2014 via Android
    你觉得不好,就花时间重构吧,没必要抱怨。产品最重要的是能跑起来,实现需要的功能。

    代码优雅又不是必须的,至少老板不在乎,用户不在乎。
    rannnn
        7
    rannnn  
       Jun 21, 2014 via iPhone   ❤️ 3
    @em70 重构是吃力不讨好的事情,别人只在乎能不能用。我们一个文件打开7万多行,20年的shit都汇集在一块了谁敢重构。。。
    msg7086
        8
    msg7086  
       Jun 21, 2014
    @panlilu 不用框架的结果多数就是自己把底层代码写成框架了。
    em70
        9
    em70  
       Jun 21, 2014 via Android
    @rannnn 看你用什么态度对待了,如果这是你的事业, 加上尽可能详细的注释,能封装一点是一点,逐渐局部优化。如果只是一份工作,那就凑合着看吧。
    zencoding
        10
    zencoding  
       Jun 21, 2014
    mivec
        11
    mivec  
       Jun 21, 2014
    同感.写一堆require.找个方法要按目录来搜.真累人
    thinkif
        12
    thinkif  
       Jun 21, 2014
    可能你的同事也觉得这些代码跟屎一样, 可是都不敢(或者是懒得)去重构
    imn1
        13
    imn1  
       Jun 21, 2014
    怎么越听越像是面向过程?如果是这样,也不能完全说他们错啊,PHP面向过程也有其优势的~
    hitsmaxft
        14
    hitsmaxft  
       Jun 21, 2014
    老的代码别动, 新的代码模块化处理

    其实每一代人都是这么想的, 不过时代变了。。
    Mutoo
        15
    Mutoo  
       Jun 21, 2014   ❤️ 12
    AlanZhang
        16
    AlanZhang  
       Jun 21, 2014 via iPhone
    这年代,不用框架等同于耍流氓。
    mahone3297
        17
    mahone3297  
       Jun 21, 2014
    可怜。。。确实如ls一位所说,说不定过段时间,lz的能力也成这样了。。
    pango
        18
    pango  
       Jun 21, 2014
    @Mutoo 每当看到这样的代码我真的想一波动拳打过去。
    dongbeta
        19
    dongbeta  
       Jun 21, 2014
    这种情况确实令人郁闷。

    我们在平时非常注意代码的干净整洁,我们每一个人都有代码洁癖,也肯分配时间来整理代码,要不楼主你来我们这里吧。
    raincious
        20
    raincious  
       Jun 21, 2014 via Android
    @Mutoo 我艹,干得漂亮。

    虽然我以前的代码跟这个类似。

    另外一个isset都没有,不会notice么?
    shiny
        21
    shiny  
    PRO
       Jun 21, 2014
    require 太多说明 autoload 没用好或者用不起来;这同时说明了代码结构混乱以至于没法 autoload。
    严格执行代码规范就能解决大半问题了,一般的项目引入框架还是太重了。
    kenzi
        22
    kenzi  
       Jun 21, 2014 via Android
    @raincious 可以把 notice warning 提示关掉。。。
    feuvan
        23
    feuvan  
       Jun 21, 2014
    没框架的代码找变量用 ack,很方便。
    ddzz
        24
    ddzz  
       Jun 21, 2014
    自从用了phpstorm(还有jetbrains的其他IDE),感觉框架语言都无所谓了,一个好的IDE带来的震撼比好语言好框架都要大
    hitsmaxft
        25
    hitsmaxft  
       Jun 21, 2014
    @ddzz ide能帮你解决多人协作开发的问题?你把手段当成目的了
    huoxiaochai
        26
    huoxiaochai  
       Jun 21, 2014
    根本就不是一个水平上的人啊,你如果想进步,尽早扭转局面吧,要么改变提高,要么你走。时间宝贵啊
    ddzz
        27
    ddzz  
       Jun 21, 2014
    @hitsmaxft 框架也解决不了,在IDE下用require_once,ctrl点击直达变量、常量、方法定义的地方,比什么框架的import方便多了。

    多人协作开发,每人脑子里装着数据库结构,表间的联系,弄得滚瓜烂熟,面向对象还是面向过程都不重要了。

    我们上一个项目每个action一个php文件,比如:
    article_view.php
    article_list.php
    article_add.php
    article_edit.php
    article_delete.php
    每个文件基本不到100行代码,用phpstorm模糊搜索切换文件,谁用谁知道。
    raincious
        28
    raincious  
       Jun 21, 2014
    @ddzz 这很明显是框架或者AutoLoad有问题,要不就是IDE不强。

    你这个例子可以用Namespace来管理,现在PHPStorm这样的IDE对Namespace的支持很好。这样你就可以用

    Project\Article\View 之类来拆分控制器的类。

    框架个人觉得就是为了避免多人协作的时候需要记忆的东西太多,避免出错。
    yakczh
        29
    yakczh  
       Jun 21, 2014
    @ddzz 如果一个模块一个目录呢?

    article
    \
    add.php
    edit.php
    list.php
    这种呢
    raincious
        30
    raincious  
       Jun 21, 2014   ❤️ 1
    刚拿自己的框架试了下,用Namespace + IDE加载没问题。PHPStorm还真挺智能的。

    (图片8MB)
    hitsmaxft
        31
    hitsmaxft  
       Jun 21, 2014
    @ddzz 说明应用太简单。

    )> ~ cloc .
    1268 text files.
    1222 unique files.
    4221 files ignored.

    http://cloc.sourceforge.net v 1.60 T=14.02 s (74.5 files/s, 10291.6 lines/s)
    -------------------------------------------------------------------------------
    Language files blank comment code
    -------------------------------------------------------------------------------
    PHP 997 13658 22488 87119
    Javascript 15 2541 2159 12423
    CSS 10 287 121 1523
    XML 12 12 0 791
    HTML 3 231 0 741
    Python 1 17 9 80
    Bourne Shell 3 22 4 44
    YAML 3 0 0 17
    DOS Batch 1 6 4 6
    -------------------------------------------------------------------------------
    SUM: 1045 16774 24785 102744
    -------------------------------------------------------------------------------
    AlanZhang
        32
    AlanZhang  
       Jun 21, 2014 via iPhone
    @ddzz 如果web开发不用框架,肯定会再一次发明轮子。
    Actrace
        33
    Actrace  
       Jun 21, 2014
    其实还好啦。。。
    @dongbeta 代码洁癖是绝症,而且每个人都有。。。如果大家还都有强迫症的话。。。会不会打起来。。。
    nilai
        34
    nilai  
       Jun 21, 2014
    找到那张神图代码的出处了
    https://gist.github.com/robmiller/7153470
    summer
        35
    summer  
       Jun 21, 2014
    从老板的角度看,新来的这家伙怎么这么多事,这也不行那也不行,说的那些框架啥的,又不见对业务有多大贡献,还是原来这帮伙计好
    zjgood
        36
    zjgood  
       Jun 21, 2014 via Android
    @nilai 这还是代码吗?这对称得。。。
    oimotis
        37
    oimotis  
       Jun 21, 2014
    我不用框架跟OO,一个原因是懒得学了,另一个原因是他们都跑得比较原来的写法慢,框架上传文件也要多很多。
    ichou
        38
    ichou  
       Jun 21, 2014
    @oimotis 好一个懒得学 要运行快的话 可以研究下 php 库文件的编写和编译
    wwek
        39
    wwek  
       Jun 21, 2014
    @Mutoo 笑晕了这个图···
    ruandao
        40
    ruandao  
       Jun 21, 2014
    碰到那些业务第一的,你就只能认了吧

    面向对象用的跟面向过程一样的

    oo 不见得会比原来的写法慢~~
    lucky2touch
        41
    lucky2touch  
       Jun 21, 2014
    话说楼主选择这家公司都不问一下他们是使用的什么技术么......问清楚了就应该有觉悟啊哈哈
    a591826944
        42
    a591826944  
       Jun 21, 2014
    @raincious 求生成动图的软件名?是一种类似 录制的软件么?
    raincious
        43
    raincious  
       Jun 22, 2014
    @a591826944

    多年前的Camtasia Studio 6

    或者这个也挺好,但是不支持生成的时候自动缩放: http://www.cockos.com/licecap/
    shawnvan
        44
    shawnvan  
       Jun 23, 2014
    性能瓶颈一般不出在框架上,相反框架带来的开发工作效率减少的成本,要远远比增加一台服务器便宜
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5583 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 143ms · UTC 08:20 · PVG 16:20 · LAX 01:20 · JFK 04:20
    ♥ Do have faith in what you're doing.