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

团队中成员编程风格差异好大

  •  
  •   rming · 2015-07-19 04:42:16 +08:00 · 5912 次点击
    这是一个创建于 3445 天前的主题,其中的信息可能已经有所发展或是发生改变。

    个人不敢说哪个好,哪个坏,但是这种编程风格的差异,直接导致一些代码不能够被有效的复用,来张图大家吐槽

    35 条回复    2015-07-20 17:16:50 +08:00
    teriyaki
        1
    teriyaki  
       2015-07-19 05:20:11 +08:00   ❤️ 1
    1.模块解耦好 这个问题不大
    2.不要总想着复用写类 有时copypaste更好
    Septembers
        2
    Septembers  
       2015-07-19 05:22:47 +08:00 via Android
    “软件,就像所有技术一样,具有天然的政治性。代码必然会反映作者的选择、偏见和期望。”
    see http://kb.cnblogs.com/page/79308/
    Matrixbirds
        3
    Matrixbirds  
       2015-07-19 05:53:53 +08:00
    所以要统一一下coding style
    MrEggNoodle
        4
    MrEggNoodle  
       2015-07-19 08:05:22 +08:00
    大家坐下来讨论吧,选择一种规范。
    haiyang416
        5
    haiyang416  
       2015-07-19 08:17:13 +08:00 via Android
    这东西不是规范要求怎么这就怎么写么?如果没有规范,那就没有槽点。
    Septembers
        6
    Septembers  
       2015-07-19 08:56:50 +08:00 via Android
    @haiyang416 像golang那样强行格式化统一代码风格不是每个团队/人都能接受的
    Decadent
        7
    Decadent  
       2015-07-19 11:43:19 +08:00
    为什么谷歌要执行严格的代码编写规范 | 外刊IT评论
    http://www.vaikan.com/google-coding-standards/
    alphonsez
        8
    alphonsez  
       2015-07-19 15:05:39 +08:00
    没必要统一也统一不了。就像最终的代码质量也是参差不齐。
    有用的代码一定会被一遍一遍重写到足够好为止。没用的代码who cares.
    crystaldust
        9
    crystaldust  
       2015-07-19 15:41:59 +08:00
    没怎么写过PHP,没看出来啥问题啊?
    sobigfish
        10
    sobigfish  
       2015-07-19 15:49:50 +08:00
    php-cs-fixer
    在git push 前hook
    rming
        11
    rming  
    OP
       2015-07-19 17:37:57 +08:00
    rming
        12
    rming  
    OP
       2015-07-19 17:46:14 +08:00
    @Septembers
    “软件,就像所有技术一样,具有天然的政治性。代码必然会反映作者的选择、偏见和期望。”
    学习了。
    如果是我,我觉得可能会这样写

    ![]( )
    Septembers
        13
    Septembers  
       2015-07-19 18:06:28 +08:00
    @rming $conditon 这里应该用复数形式吧?
    picasso250
        14
    picasso250  
       2015-07-19 18:20:10 +08:00
    纠结大括号的程序员将来都不是成功的CTO
    raincious
        15
    raincious  
       2015-07-19 18:35:45 +08:00   ❤️ 1
    想知道能写这样代码的程序员值多少钱。

    一个叫tableCondition的方法硬依赖了$_GET(直接$_GET然后intval就不多说了)。

    正确的API应该是:
    public function tableCondition($pid)

    (其实不应该是buildTableCond么?)

    只有控制器能够接受用户输入,其他模块接收来自内部的传递的参数(比如来自控制器处理后的)。然而看截图的样子应该是Model吧?
    rming
        16
    rming  
    OP
       2015-07-19 18:53:03 +08:00
    @Septembers 😅
    @raincious 看看就好,不要激动
    hellokittyer
        17
    hellokittyer  
       2015-07-19 19:35:05 +08:00 via Android
    就看leader了
    Keita1314
        18
    Keita1314  
       2015-07-19 20:13:21 +08:00
    @raincious 不太清楚硬依赖$_GET是什么意思,想请教一下
    rming
        19
    rming  
    OP
       2015-07-19 20:27:33 +08:00
    @Keita1314 quick and dirty 仅供吐槽
    sogood
        20
    sogood  
       2015-07-19 20:39:17 +08:00 via iPhone
    用 phpfmt
    matthewz
        21
    matthewz  
       2015-07-19 20:57:05 +08:00
    代码风格肯定统一啊 怎么会有不统一的公司? review 直接打回去重写
    Rube
        22
    Rube  
       2015-07-19 21:10:26 +08:00
    @Keita1314 模块无法独立出来
    raincious
        23
    raincious  
       2015-07-19 21:36:20 +08:00   ❤️ 1
    @Keita1314

    $_GET是超级全局变量,储存的是URL Query的内容(属于用户输入)

    硬依赖我指的是直接在不应该使用这个变量的地方直接使用了这个变量。也就是我上面说的Controller来拿用户输入,Model只负责处理从Controller得到的数据(Controller给的)。

    直接使用$_GET导致这个方法与$_GET['pid']耦合了,如果以后想要重用,也就只能CopyPaste,这会导致在未来项目因为代码量变大而变得很难维护。

    因此这里不应该直接用$_GET的数据(楼主的代码里还用了下isset),而应该用其他方法来传递给这个方法,比如作为参数。

    其实原本的代码也就是12楼这么简单,但是用Request去拿$_GET也是换汤不换药……

    就这个问题来说,想解决这个耦合很简单,写个Parameter的类作为容器,将$_GET里所有需要用到的数据导入进去就可以了,然后就可以比如:

    'parnet_id' => $this->parameter->pid,

    这样这个Model就仅仅依赖这个Parameter类,而不依赖$_GET了。

    Parameter类比如:
    https://gist.github.com/raincious/0a1657312a54fc15a41c
    (手打的,未测试过)
    zhicheng
        24
    zhicheng  
       2015-07-19 21:41:35 +08:00
    对于编码风格,必须给掰直喽!
    zhicheng
        25
    zhicheng  
       2015-07-19 21:43:47 +08:00
    还有统一约定的模块名,对象名,字段名,约定俗成的名称变量等,建立成文档。最烦有些程序员梦想自己是个艺术家。遇到这样的拖出动枪毙。
    itbdw
        26
    itbdw  
       2015-07-19 23:34:11 +08:00 via iPhone
    团队核心成员需制定规范的。而且代码质量确实堪忧
    salmon5
        27
    salmon5  
       2015-07-20 00:28:12 +08:00
    leader不关心规范,同事们不鸟规范怎么办?
    fx
        28
    fx  
       2015-07-20 00:29:35 +08:00
    Rails大法好
    tushiner
        29
    tushiner  
       2015-07-20 00:40:15 +08:00
    如若不是天才,偏理性的风格更适合团队协作开发。
    wd0g
        30
    wd0g  
       2015-07-20 00:47:21 +08:00
    @rming 直接将参数代入到sql中导致sql注入
    rainysia
        31
    rainysia  
       2015-07-20 00:49:46 +08:00
    要吐槽的话..

    上一种, 符号两边应该空格..而且$_GET...

    下一种, 也一样. 都不咋滴

    可以看看PHP的PSR规范. 再来吐槽 然后差不多可以结贴了
    liuzelei
        32
    liuzelei  
       2015-07-20 01:31:35 +08:00
    有PEP-8这种殿堂级的代码规范做参考还不够么?
    liuzelei
        33
    liuzelei  
       2015-07-20 01:31:58 +08:00
    sorry, 我错了
    laucie
        34
    laucie  
       2015-07-20 08:41:15 +08:00
    LZ知足吧 要是给你个没有风格的 你直接跪了 我就不贴了
    mozartgho
        35
    mozartgho  
       2015-07-20 17:16:50 +08:00
    同一个项目中最好使用一致的代码风格,这样不同的人看代码就不会感到别扭
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   848 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:35 · PVG 05:35 · LAX 13:35 · JFK 16:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.