作为Pascal和Delphi很长一段时间的开发人员,我总是将我的开头和结尾排成一行:
begin
if x = y then
begin
...
...
end
else
for i := 0 to 20 do
begin
...
...
end;
end;
Run Code Online (Sandbox Code Playgroud)
让我疯狂的是代码格式化:
begin
if x = y then begin
...
...
end
else
for i := 0 to 20 do begin
...
...
end;
end;
Run Code Online (Sandbox Code Playgroud)
当有几个级别的复合语句时,我发现这很难读.上面的代码是可以的,因为它并不复杂,但为了保持一致性,我更喜欢所有开始和结束对齐.
当我开始使用c#时,我发现自己也在对齐花括号.C#世界的常态是什么?
编辑:
有人指出,这是一个不应该在SO上提出的问题.我不明白为什么不.我正在设置编码指南文档.我知道我会对某些事情产生一些阻力,我希望能在这里得到一些答案,所以我可以随时准备迎接这种阻力.
我已经接管了一个混合的PHP4/PHP5项目,该项目已经从开发人员传给开发人员,每个项目都会让事情变得更糟.在我花费太多时间之前,我想开发一个基本标准,至少具有一致的格式.
任何人都可以推荐一个重新格式化代码的实用程序(最好是Linux或Mac OS X)吗?
如果我可以设置影响输出的参数(如制表符缩进,大括号/括号放置,何时将数组值拆分到新行等),那么这是一个好处,虽然不是至关重要的.
首选开源工具,但我也想了解您购买软件的经验.
如果我有以下内容:
func(arg1, arg2, arg3...)
func(longargarg1, longerarg2, arg3,...)
...
Run Code Online (Sandbox Code Playgroud)
如何对齐参数以便跟随它?
func(arg1 , arg2 , arg3...)
func(longargarg1, longerarg2, arg3,...)
...
Run Code Online (Sandbox Code Playgroud)
[我可以使用Mx align-regex来对齐第一个参数,但我不能用合适的正则表达式来对齐其余的参数.如果某些参数是带有逗号的字符串,则答案也会考虑到这一点.
如何在IntelliJ中重新格式化文件并加入所有拆分的行.
我知道我可以通过选择行和"连接线"来单独完成 CTRL + SHIFT + J
由于我们最近更改了代码格式化包装策略,因此我希望能够根据更新的包装设置连接所有文件中的行.(设置>代码样式>常规>右边距)
唯一的事情是IntelliJ似乎乐于根据包装设置分割线条,但是会默默地拒绝根据该设置连接线条.
与IntelliJ中的强制代码格式化器连接线的问题不同,我不满意分割线或手动连接(如接受的答案所示).我希望IntelliJ自动加入行.
奖金问题:其他哪些编辑可以做到这一点?
我希望能够使用gqVim中的组合键来格式化Beamer LaTeX幻灯片中的文本.
例如,我想gqap改变这个:
\begin{frame}{Some title}
\begin{itemize}\item first point
\item second point
\item etc. point \end{itemize} \end{frame}
Run Code Online (Sandbox Code Playgroud)
进入这个:
\begin{frame}{Some title}
\begin{itemize}
\item first point
\item second point
\item etc. point
\end{itemize}
\end{frame}
Run Code Online (Sandbox Code Playgroud)
具体来说,我想遵守以下规则:
\item 总是从一条新线开始\begin并\end始终开始新的一条线\begin{frame}并\end{frame}始终从第1列开始\item 在其环境中缩进2个空格因此,我的核心问题涉及如何实现上述目标.
或者,任何有关起点或有用教程的建议都会非常有用.我也很想在有关的相对优点有任何意见formatexpr,formatprg或内部格式进行格式化等.
我无法设置格式化程序,以免在接口中的方法之间插入空行.同时我仍然希望在类中的方法之间有空行.我找不到合适的格式化程序设置.有人能指出我正确的选择吗?
我正在使用Visual Studio 2012来开发C++代码.我习惯于格式化我的代码如下:
void
SomeThing::DoesSomething()
{
// brilliant code
}
Run Code Online (Sandbox Code Playgroud)
但是,当使用VS2012代码格式化程序时,它总是将我的代码转换为:
void
SomeThing::DoesSomething()
{
// still brilliant
}
Run Code Online (Sandbox Code Playgroud)
有没有办法避免返回类型下面的行中的ClassName :: Func()缩进而不完全关闭自动缩进?
有没有办法生成一个与Intellij IDEA代码格式规则匹配的eclipse代码格式化程序xml?
根据PSR-2标准,是否有客观原因使用空格而不是制表符来缩进文件,有人可以提供:
PSR-2标准的基础?
PSR-2标准的作者想到的不仅仅是"外观和感觉",不仅仅是基于观点的东西,很多人都难以理解为什么在团队合作中空间更好.
根据Farsides的回答:存储库事物可能是为什么空间在PSR-2中被解释为缩进工具的确切情况.PSR-2是为协助团队合作而开发的标准.行开头处的单个意外空间 - 使用制表符时 - 可能在IDE中不可见,并且可能会潜入存储库.如果有几个人在同一个文件上工作,很可能会产生不必要的冲突.使用空格而不是标签可以轻松捕捉到眼球上的这种意外空间,这可能是一个原因,为什么使用它们成为标准.
在一个使用IntelliJ社区版的scala项目中,我们希望每个文件使用多个包,以便我们可以使用较短的语法来引用它们:
package com.dreamlines.dragonfly
package api
package domain
package harbours
import common.entities.EsHarbour
import common.utils.date.DLDateTime
Run Code Online (Sandbox Code Playgroud)
但是,IntellJ希望强制使用完全合格的软件包名称,因此在优化导入时,它将代码更改为:
import com.dreamlines.dragonfly.common.entities.EsHarbour
import com.dreamlines.dragonfly.common.utils.date.DLDateTime
Run Code Online (Sandbox Code Playgroud)
如何配置优化导入的行为?
这应该
我想保持优化导入的其他行为,例如删除未使用的导入,添加缺失的导入,对导入进行排序。因此,我不认为不使用优化导入是一个有效的选项。
此外scalafmt,我们正在使用格式化程序,因此它可能与.scalafmt.conf此项目的外观有关:
version = 2.0.0
style = default
maxColumn = 120
continuationIndent.callSite = 2
continuationIndent.defnSite = 2
align.openParenDefnSite = false
align.openParenCallSite = false
danglingParentheses = true
indentOperator = spray
project.excludeFilters = [".*\\.sbt"]
rewrite.rules = [RedundantBraces, RedundantParens, prefercurlyfors]
unindentTopLevelOperators = true
importSelectors = singleLine
spaces.afterKeywordBeforeParen = true
lineEndings = unix
newlines.penalizeSingleSelectMultiArgList = false
newlines.alwaysBeforeElseAfterCurlyIf = …Run Code Online (Sandbox Code Playgroud)