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

大家写 php 代码都用哪一套编码规范?你们都了解自己的编码规范的好处吗?

  •  1
     
  •   tonitech · 2014-05-28 01:51:17 +08:00 · 6162 次点击
    这是一个创建于 3837 天前的主题,其中的信息可能已经有所发展或是发生改变。
    昨天在公司跟同事们定编码规范,我一直采用的是PSR-2的规范,我推荐使用它。而有些同事无法接受class和function后面的花括号另起一行,我们陷入了争论之中,我也想不出为什么class和function后面的花括号要另起一行,有什么好处?

    我的想法是既然是团队协作开发,那我们必须要有一套自己的规范标准,不能因为不喜欢而不使用。规范就像宗教信仰,你要有自己的信仰,就得找到一个信奉的神灵。
    40 条回复    2014-08-16 17:56:32 +08:00
    lm902
        1
    lm902  
       2014-05-28 02:30:45 +08:00
    我表示格式都是Visual Studio给我自动改的,无论我是怎么写的都会自动改过来
    tonitech
        2
    tonitech  
    OP
       2014-05-28 02:34:23 +08:00
    @lm902 你用vs不是写php的啊
    lm902
        3
    lm902  
       2014-05-28 02:35:45 +08:00
    @tonitech PHP也有啊
    tonitech
        4
    tonitech  
    OP
       2014-05-28 02:39:33 +08:00
    @lm902 对啊,用Zend Studio有format功能,里面可以选择format的code style,就有PSR-2选项的,但是有人不喜欢这个规范。。。
    yangqi
        5
    yangqi  
       2014-05-28 02:41:32 +08:00
    感觉花括号最不重要,重要的是命名规范
    lm902
        6
    lm902  
       2014-05-28 02:43:16 +08:00
    @yangqi 命名规范+1
    lm902
        7
    lm902  
       2014-05-28 02:44:02 +08:00
    要不然写出 com.Company.name_space.classname().methodName()就233了
    xuwenmang
        8
    xuwenmang  
       2014-05-28 07:10:35 +08:00
    没好处!
    1、显示器越来越扁,起始花括号另起一行?不觉得占行数啊。
    2、起始花括号起的是承上启下的作用,在同一行,非常明确是属于哪个逻辑。而另起一行,感觉生生被剥离了这种关系。
    3、其实我是看了2天drupal的代码,习惯了!但是上面两条是非常明确地。
    holystrike
        9
    holystrike  
       2014-05-28 07:44:58 +08:00 via iPhone   ❤️ 1
    Class function namespace 另起一行是为了区分逻辑代码,因为这哥仨是语言结构,不是逻辑,
    if else switch while 才是逻辑,一眼看到起头花括号起头了,表示接下来是一个代码段,看到在屁股后边,那么接下的代码就表示程序要进行逻辑上的处理了
    lm902
        10
    lm902  
       2014-05-28 08:14:49 +08:00
    <?
    class Example
    {
    /// <summary>
    /// Fxck the $target
    /// </summary>
    function Fxck ($target)
    {
    echo "$target is fxcked."
    }
    }
    ?>
    表示我差不多就是这样写PHP
    kslr
        11
    kslr  
       2014-05-28 08:44:48 +08:00
    PSR-2 函数重启一行,其他均为屁股后面。
    tonitech
        12
    tonitech  
    OP
       2014-05-28 09:09:31 +08:00
    @holystrike 谢谢!
    hellov22ex
        13
    hellov22ex  
       2014-05-28 09:11:06 +08:00
    8楼的哥们是逗人么,第一条就在瞎掰
    mahone3297
        14
    mahone3297  
       2014-05-28 09:19:36 +08:00
    又是一个争论贴?
    我觉得psr-2规范挺好。。。。我也比较喜欢class, function 花括号换行。。。
    belin520
        15
    belin520  
       2014-05-28 09:20:14 +08:00   ❤️ 1
    @hellov22ex 哈哈,会引发决斗的

    我写PHP这样
    function func()
    {

    }

    写前端这样:
    function func(){

    }
    ichou
        16
    ichou  
       2014-05-28 09:22:48 +08:00
    @belin520 握爪
    zjdboy
        17
    zjdboy  
       2014-05-28 09:24:41 +08:00
    你为什么不自已改变规范,改变信仰
    tonitech
        18
    tonitech  
    OP
       2014-05-28 09:34:40 +08:00
    @zjdboy 因为不满意的是少数人。
    micate
        19
    micate  
       2014-05-28 09:46:21 +08:00
    不接受就开掉换个能接受的好了。
    kakaryan
        20
    kakaryan  
       2014-05-28 09:49:31 +08:00
    总有人的意见不一致的.关键是要确定一个代码规范,不通过代码规范检查不能提交代码,就算绕过代码规范检查,合并代码上线的时候也需要做检查,不符合规范不允许提交.形成规范代码的习惯才是目的.
    muziyue
        21
    muziyue  
       2014-05-28 09:51:24 +08:00
    花括号换行党和不换行党又要开始战争了吗
    qq286735628
        22
    qq286735628  
       2014-05-28 09:54:13 +08:00
    看到PHPStorm里面的被打了颜色,就会想办法把颜色给搞掉,不管是warn还是notice,看着想牛皮藓一样,很不爽
    csx163
        23
    csx163  
       2014-05-28 09:56:36 +08:00
    都看得懂,为何分换行不换行呢,程序员何苦为难程序员
    teavoid
        25
    teavoid  
       2014-05-28 10:34:02 +08:00
    花括号真心不应该是争论的重点...
    akira
        26
    akira  
       2014-05-28 11:02:04 +08:00
    同意25楼。
    换行什么的,不都是代码格式化工具做的事情么。
    luoyou1014
        27
    luoyou1014  
       2014-05-28 11:15:07 +08:00
    换不换行没规范不要紧, 最多是眼睛看着略微不舒服.

    重要的应该是命名啊, 下划线和驼峰式也不用太纠结, 主要是严禁各种缩写命名, 拼音命名.

    被缩写命名坑的悲伤, 其他的压根不算事……
    t2doo
        28
    t2doo  
       2014-05-28 11:39:10 +08:00
    已经习惯成这样了function(){
    }

    改不掉了
    Comdex
        29
    Comdex  
       2014-05-28 11:53:34 +08:00 via Android
    用golang就不用争了,哈哈
    cevincheung
        30
    cevincheung  
       2014-05-28 11:55:19 +08:00
    纯小写+下划线


    class my_class {
    ....
    }
    function my_func() {
    ....
    }
    markmx
        31
    markmx  
       2014-05-28 11:58:18 +08:00   ❤️ 1
    自动排版 不纠结。。
    hellov22ex
        32
    hellov22ex  
       2014-05-28 12:00:31 +08:00
    @belin520 同样,但是我觉得我还是去Delphi好,好歹是在和样子的
    procedure button1.Click.......
    const

    var

    begin
    end.
    wdkwdkwdk
        33
    wdkwdkwdk  
       2014-05-28 12:12:15 +08:00
    你的头像是锤子么
    tonitech
        34
    tonitech  
    OP
       2014-05-28 12:41:26 +08:00
    @wdkwdkwdk 是我自己设计的,里面是T。。。
    justfindu
        35
    justfindu  
       2014-05-28 12:47:25 +08:00
    表示不另起一行. 因为 (){} 这两都需要shift. 在一行的时候正好顺手就打出来了, 然后 ←,Enter. 不然需要 ←←,Enter.

    嗯 其他命名规范还是需要的.
    tang3w
        36
    tang3w  
       2014-05-28 12:53:51 +08:00
    @wdkwdkwdk 是我想多了吗...
    zxb888
        37
    zxb888  
       2014-05-28 17:27:22 +08:00
    我一般是这样的
    function func()
    { $ar36='0123456789abcdefghijklmnopqrstuvwxyz';
    ....
    }
    spoonwep
        38
    spoonwep  
       2014-05-28 18:20:08 +08:00
    phpstorm自动格式化……
    yakczh
        39
    yakczh  
       2014-05-29 07:48:28 +08:00
    转java或者python吧,golang 就不用纠结这么无聊的问题了
    aWangami
        40
    aWangami  
       2014-08-16 17:56:32 +08:00
    有办法改吗。真受不了!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3378 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:39 · PVG 19:39 · LAX 03:39 · JFK 06:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.