缩进源代码的正确方法是什么?

缩进源代码的正确方法是什么?

这可能是一个非常基本的问题:

当我编写代码时,我希望实现行的逻辑和可读结构,我可以看到哪个括号关闭哪个括号。

\begin{equation}
 \begin{multlined}
  Here is some random equation that goes on for a long time
 \end{multlined}
\end{equation}

如果公式(这里我指的是源代码,而不是编译后的文档)继续到需要跳转到下一行的地方,它就会左对齐,这会搞砸缩进。我可以手动添加一些空格,但如果我更改窗口大小,它会重新对齐并再次出错。实现逻辑缩进的正确方法是什么?

如果之前已经问过这个问题,我深感抱歉;我在之前的问题中没有找到它。

编辑:抱歉,忘了说了,我使用 writelatex.com 作为我的编辑器。

答案1

我实际上经常思考这个问题,但(几十年后)还没有找到一种通用的方法。从你的评论中可以看出,每个程序员都有自己的缩进“风格”。

我同意 egreg 的观点,它在宏定义中最为重要。我发现一个特别有用的方法是,如果你必须将宏名称与其参数拆分成多行,那么用 结束前一行{%并缩进下一行:

\...\macroname{%
  \argument}%
\next code line

而不是

\...\macroname%
  {\argument}%
\next code line

前者告诉我,这\argument实际上是一个参数,\macroname而不是命令序列中的下一个宏。您可能会说括号已经告诉了您这一点,但您直到看到该行才会知道这一点。使用前一种方法(左括号),就像将逗号放在一行文本的末尾,而不是下一行的开头。

如果有多个参数,或者参数本身很长且很复杂,可能需要多行,我通常会以对称的方式使用调用宏来关闭参数:

\...\macroname{%
  \argument{blah}{blah}\other-parts-of argument{}%
}%
\next code line

如果事情变得非常棘手,我有时会在行上单独开始和结束参数括号:

\ifthenelse{\equal{\a}{\b}}%
  {&
    true condition%
  }{%
    false condition%
  }%
 next line of code

我发现,这个}{%结构本身就占一行,它特别有助于提醒我一个论点即将结束,而下一个论点即将开始。

正如您所看到的,有人可能会说我的方法并不一致,而是随着编码内容的复杂性而变化。

我想重申,目标是可读性和可理解性。如果以某种方式解析代码可以帮助读者了解你的意图,那么解析就是有帮助的。就像所有事情一样,有独特的方法和风格。

相关内容