8

这个问题与其说是技术性的问题,不如说是寻求建议以找到不会造成伤害的正确方法。

假设如下:

  1. 我们有一个用 Perl 开发的大型应用程序。
  2. 我们想开始在命令行上使用 perltidy 来为格式化强加统一的样式/规则
  3. 我们有很多分支,我们不知道什么时候会合并到主分支。他们应该在合并之前或之后以某种方式进行整理
  4. 我们希望避免任何由格式化引起的提交冲突。

我考虑开始在子程序级别进行格式化,但我在 perltidy 中没有找到这样的功能。还有另一个功能“跳过选定的代码段”,但现在我可能想要相反的——只格式化选定的代码段。这个想法是,当开发人员接触部分代码时,他/她将只整理修改过的部分。

最好的办法是找到一种方法在不中断开发周期的情况下一次性格式化整个项目,并确保我们不会破坏代码的任何部分(在合并期间)。我们有单元测试,但代码的某些部分可能仍然未被发现。

我还要澄清一下,团队中的每个人都使用可能不同的编辑器。例如,我将 Sublime Text 3 与SublimePerlTidy一起使用。其他人使用KateAtomVIM。一种正确的方法似乎是仅格式化@xxfelixxx 指出的我们接触的代码片段(谢谢!)

4

1 回答 1

10
  1. 定义一个编码标准并创建一个.perltidyrc与所有开发人员共享的标准。
  2. 整理是团队为他们的项目执行的任务之一(连同测试和代码审查),所以他们整理/测试/审查他们接触的代码。
  3. 很好地测试代码。整理可能会引入细微的错误,因此在少量可管理的情况下会更好(而不是仅仅整理整个代码库,并想知道为什么事情停止工作......)
  4. 整洁的提交应该是独立的,没有其他更改,以便回归可以分别与代码更改或整洁的更改相关联。 git bisect非常适合查找有问题的提交。

至于我自己的 perltidy 用法,使用emacsC-space ,我倾向于通过突出显示一个区域(创建一个标记,导航以突出显示一个区域,然后运行M-p我映射到的区域)来一次整理小块代码perltidy-region。为了得到这个工作,安装perltidy并将以下内容添加到您的.emacs文件中:

(defun perltidy-region ()
    "Run perltidy on the current region."
    (interactive)
    (save-excursion
      (shell-command-on-region (point) (mark) "perltidy -q" nil t)))
(defun perltidy-defun ()
    "Run perltidy on the current defun."
    (interactive)
    (save-excursion (mark-defun)
    (perltidy-region)))

(global-set-key "\M-p" 'perltidy-region)
于 2015-08-19T00:06:56.747 回答