如何在Delphi和C#中格式化复合语句?

Ste*_*eve 9 c# delphi coding-style code-formatting

作为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上提出的问题.我不明白为什么不.我正在设置编码指南文档.我知道我会对某些事情产生一些阻力,我希望能在这里得到一些答案,所以我可以随时准备迎接这种阻力.

Eug*_*ota 6

我个人使用:

if Condition then
begin
  DoThis;
end else
begin
  DoThat;
end;
Run Code Online (Sandbox Code Playgroud)

请参见对象Pascal样式指南.

在复合if语句中,将每个元素分隔语句放在一个新行上:示例:

// INCORRECT
if A < B then begin
  DoSomething; 
  DoSomethingElse;
end else begin
  DoThis;
  DoThat;
end;

// CORRECT
if A < B then 
begin
  DoSomething; 
  DoSomethingElse;
end 
else 
begin
  DoThis;
  DoThat;
end;
Run Code Online (Sandbox Code Playgroud)

以下是一些被认为有效的变体:

// CORRECT
if Condition then
begin
  DoThis;
end else
begin
  DoThat;
end;

// CORRECT
if Condition then
begin
  DoThis;
end
else
  DoSomething;

// CORRECT
if Condition then
begin
  DoThis;
end else
  DoSomething;
Run Code Online (Sandbox Code Playgroud)