【问题标题】:Which coding style is more common?哪种编码风格更常见?
【发布时间】:2009-05-01 04:42:21
【问题描述】:

我绝不会以任何形式宣传/推广我的编程风格,但就“多变量声明”而言,哪种情况在专业上和普遍上更容易接受:

案例一:

private $databaseURL   = "localhost"  ;
private $databaseUName = "root"       ;
private $databasePWord = ""           ;
private $databaseName  = "AirAlliance";

案例2:

private $databaseURL = "localhost";
private $databaseUName = "root";
private $databasePWord = "";
private $databaseName = "AirAlliance";

我喜欢案例 1 的原因是因为我可以略过它并看到一切都是正确的方式比案例 2 更快。而且我可以直观地熟悉变量名,这使得在程序中更快地使用它们.

【问题讨论】:

  • 我也喜欢案例 1,但这个问题很主观。
  • 这并不局限于 PHP...
  • 除非默认值是基于长度的(例如,如果它们是 10 的幂),第一种样式如何让您更快地看到一切都是正确的?

标签: language-agnostic coding-style


【解决方案1】:

无论项目已经在使用哪种样式,因此您最终不会花费一整天时间修复您接触的每个文件。

【讨论】:

    【解决方案2】:

    案例 1.5:

    private $databaseURL   = "localhost";
    private $databaseUName = "root";
    private $databasePWord = "";
    private $databaseName  = "AirAlliance";
    

    我不认为对齐分号使其更具可读性,它只是让更改其中一个字符串的值变得烦人,然后必须添加或删除空格以重新排列分号。

    在这种情况下,变量名看起来不太可能改变,所以将等号对齐应该没问题。但是,如果变量名称可能会改变,我会选择案例 2,因为(再次)必须重新排列所有内容会很烦人。 (想象一下简单地添加一个名为 $databaseLongVariableName 的新变量所涉及的工作。)

    【讨论】:

    • 没错,我看不出对齐分号会有什么不同,除了做起来很痛苦!
    • 啊,emacs 和 M-X align-regexp-region 的连接
    • 在 TextMate ⌘⌥] (Command + Option + Right Bracket) 会这样做。
    【解决方案3】:

    案例 2。当您将一个新变量添加到您的“组”中,或者在其中一行中添加/删除一个字符时,您不必花时间摆弄试图让事情排成一行。

    【讨论】:

      【解决方案4】:

      如果您在添加新变量时更改了它们的所有对齐方式,那么任何差异工具都会在此处显示多个更改。只是一个想法。

      另外,我做过一次。当我不得不添加一个更长的变量时,这让我很头疼。用空格填充所有现有的以匹配使我关闭了这种技术。

      【讨论】:

      • 关于差异的好点。我想知道是否有一个智能差异工具可以忽略格式更改。
      • @Calvin ...也许有,但我不知道是否存在。
      【解决方案5】:

      有趣的问题。就我而言,没有充分的理由使用案例 1。我以前从未见过这种风格,除了可能在配置文件中,而且正确格式化代码需要额外的时间。一旦你改变了变量的内容,你也必须重新设置你的分号。

      它仅在您也使用空格时才有效...任何使用制表符的人都可能设置了不同的制表位,因此在另一个编辑器中打开它看起来会完全不同。

      我认为你提到的可读性优势被编写它所需的额外努力所抵消。

      【讨论】:

        【解决方案6】:

        很好地对齐东西是很诱人的,我曾经在 PHP 中对齐我的访问器

        function getName()  { return $this->name;   }
        function getAge()   { return $this->age;    }
        function getHeight(){ return $this->height; }
        

        添加更长的行时会出现问题:

        function getName()  { return $this->name;   }
        function getAge()   { return $this->age;    }
        function getNiNumber(){ return $this->ni_number; }
        function getHeight(){ return $this->height; }
        

        如果我编辑其他三行,那么当我提交我的更改时,就更难看出是谁编写了特定的行,以及他们是在哪个修订版中写的。

        【讨论】:

        • +1,它只是诱使人们添加更多无用的空格来保持现有的对齐方式。
        【解决方案7】:

        对齐 = 和 ; 之类的东西只会招致一大堆标签空间的错误,这些错误会被签入,然后必须稍后修复。

        大多数人会使用一行左侧的制表符进行缩进,然后使用空格将内容对齐到右侧。

        除了给文件增加膨胀之外,它只会变成一个大而不一致的汤汁。对我来说,它不会使代码更具可读性。对一些编辑来说,它使代码的可读性更少。

        【讨论】:

          【解决方案8】:

          用例 2。这更加标准:Google C++ Style

          真的,你甚至不应该关心这个。您的编辑器应该自动格式化您的代码。在 Eclipse 中尝试 ctrl+shift+F。

          【讨论】:

            【解决方案9】:

            对齐分号对我来说似乎是浪费时间,除非您的 IDE/文本编辑器可以为您完成。特别是如果您稍后添加另一个比以前更长的条目;您必须重新调整所有个。

            【讨论】:

              【解决方案10】:

              我刚刚启动了我的编辑器,它就击中了我。我喜欢案例 1 的所有原因都在于语法高亮而不浪费时间。

              【讨论】:

              • 你的编辑打你了?我想这就是你启动它所得到的:-)
              【解决方案11】:

              案例 2. 每次重新调整间距时,您的版本控制都会变得疯狂。除了具有突出显示的 IDE 和一些还显示变量列表的 IDE 之外,对齐 '=' 和 ';' 真的是浪费时间在我看来。

              【讨论】:

                【解决方案12】:

                案例 2。如果我遗漏了分号,我有一个程序会告诉我。它是编译器。

                【讨论】:

                  【解决方案13】:

                  无论您正在从事的项目是什么,都是最好的选择。 (如果项目没有一套编码指南,强烈建议花五分钟时间来定义它们)。

                  许多大型程序都有工具扫描代码以查找要分类和清理的内容。在变量 可能 的末尾添加空格会影响其中的一些。

                  另外关于制表符,我从来没有参与过不能确定编辑时制表符间距的项目。您始终可以使用您的个人文件并在文件进入之前使用预提交挂钩来编辑文件,但是弄乱制表符间距会让人们无休止地烦恼。

                  【讨论】:

                    【解决方案14】:

                    您可以查看“Expert PHP 5 Tools”一书,以更详细地了解代码样式。 *网上有电子书*

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2011-02-18
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2010-09-19
                      • 1970-01-01
                      相关资源
                      最近更新 更多