V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
johnsneakers
V2EX  ›  问与答

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

  •  1
     
  •   johnsneakers · 2014-06-21 03:40:03 +08:00 · 8211 次点击
    这是一个创建于 3597 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前的一年都在用Yii写网站,越写越喜欢这个框架,代码真的相当优雅。

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

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

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

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

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

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

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

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

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

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

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

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

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

    另外一个isset都没有,不会notice么?
    shiny
        21
    shiny  
       2014-06-21 11:27:48 +08:00
    require 太多说明 autoload 没用好或者用不起来;这同时说明了代码结构混乱以至于没法 autoload。
    严格执行代码规范就能解决大半问题了,一般的项目引入框架还是太重了。
    kenzi
        22
    kenzi  
       2014-06-21 11:27:55 +08:00 via Android
    @raincious 可以把 notice warning 提示关掉。。。
    feuvan
        23
    feuvan  
       2014-06-21 11:34:32 +08:00
    没框架的代码找变量用 ack,很方便。
    ddzz
        24
    ddzz  
       2014-06-21 11:43:37 +08:00
    自从用了phpstorm(还有jetbrains的其他IDE),感觉框架语言都无所谓了,一个好的IDE带来的震撼比好语言好框架都要大
    hitsmaxft
        25
    hitsmaxft  
       2014-06-21 11:59:05 +08:00
    @ddzz ide能帮你解决多人协作开发的问题?你把手段当成目的了
    huoxiaochai
        26
    huoxiaochai  
       2014-06-21 12:07:59 +08:00
    根本就不是一个水平上的人啊,你如果想进步,尽早扭转局面吧,要么改变提高,要么你走。时间宝贵啊
    ddzz
        27
    ddzz  
       2014-06-21 12:09:31 +08:00
    @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  
       2014-06-21 12:34:07 +08:00
    @ddzz 这很明显是框架或者AutoLoad有问题,要不就是IDE不强。

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

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

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

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

    (图片8MB)
    hitsmaxft
        31
    hitsmaxft  
       2014-06-21 13:37:57 +08:00
    @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  
       2014-06-21 13:43:06 +08:00 via iPhone
    @ddzz 如果web开发不用框架,肯定会再一次发明轮子。
    Actrace
        33
    Actrace  
       2014-06-21 16:58:40 +08:00
    其实还好啦。。。
    @dongbeta 代码洁癖是绝症,而且每个人都有。。。如果大家还都有强迫症的话。。。会不会打起来。。。
    nilai
        34
    nilai  
       2014-06-21 17:06:41 +08:00
    找到那张神图代码的出处了
    https://gist.github.com/robmiller/7153470
    summer
        35
    summer  
       2014-06-21 17:59:11 +08:00
    从老板的角度看,新来的这家伙怎么这么多事,这也不行那也不行,说的那些框架啥的,又不见对业务有多大贡献,还是原来这帮伙计好
    zjgood
        36
    zjgood  
       2014-06-21 18:15:38 +08:00 via Android
    @nilai 这还是代码吗?这对称得。。。
    oimotis
        37
    oimotis  
       2014-06-21 18:48:05 +08:00
    我不用框架跟OO,一个原因是懒得学了,另一个原因是他们都跑得比较原来的写法慢,框架上传文件也要多很多。
    ichou
        38
    ichou  
       2014-06-21 22:24:27 +08:00
    @oimotis 好一个懒得学 要运行快的话 可以研究下 php 库文件的编写和编译
    wwek
        39
    wwek  
       2014-06-21 22:59:16 +08:00
    @Mutoo 笑晕了这个图···
    ruandao
        40
    ruandao  
       2014-06-21 23:14:41 +08:00
    碰到那些业务第一的,你就只能认了吧

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

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

    多年前的Camtasia Studio 6

    或者这个也挺好,但是不支持生成的时候自动缩放: http://www.cockos.com/licecap/
    shawnvan
        44
    shawnvan  
       2014-06-23 17:52:42 +08:00
    性能瓶颈一般不出在框架上,相反框架带来的开发工作效率减少的成本,要远远比增加一台服务器便宜
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2978 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 13:34 · PVG 21:34 · LAX 06:34 · JFK 09:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.