这种尴尬的间距是某种风格吗?


9

在阅读另一位程序员的代码时,他使用了我从未见过的格式。例如

    namespace MyNs.HereWeAre
         {//tab here for some reason
         public class SomeClass
               {//here's another tab
               public string Method()
                    {//yet another tab
                    string _variable = "";//no tab implementation
                    return _variable;
                    }
               }//eof - class  (Yes these eof comments are on every file)
        }//eof - namespace
// eof - file

我承认...此代码使我生气。很难实现这种风格。需要与IDE(Visual Studio)提供的默认格式作斗争。

如果我知道这种药理有充分的理由,我可以更容易地吞下这种药。这种风格是否源于其他编程语言/ IDE?


5
那太奇怪了。在我18年的发展中,我从未见过这种惯例。

5
如果我不得不猜测,我会说程序员是Python转换程序,他对根本不需要花括号感到很沮丧,并且习惯于缩进语法的所有子标记。
Telastyn

21
CTRL K + CTRL D!
RYFN

2
@Zeus-哦,天哪,这将节省我很多时间来解决这种非常规的格式!您应该为此得到一些答案。
P.Brian.Mackey,2012年

1
重新格式化的快捷键(Ctrl K + Ctrl D)也适用于HTML文件和Visual Studio中的其他格式。
奥德

Answers:


19

是:http : //en.wikipedia.org/wiki/Indent_style#Whitesmiths_style

如今,Whitesmiths风格在某种程度上也被称为Wishart风格,如今已不那么普遍了。它最初是在第一个商用C编译器Whitesmiths Compiler的文档中使用的。它在Windows的早期也很流行,因为它被三本有影响力的Windows编程书籍所使用,这本书是Durant,Carlson&Yao 编写的Windows 程序员指南,Petzold 编写的Windows 编程以及Norton&Yao 编写的Windows 3.0 Power Programming Techniques。 。

这种样式将与控制语句关联的括号缩进下一行。大括号内的语句缩进到与大括号相同的级别...

这种样式的优点与Allman样式的优点相似,因为将块与控制语句明确分开设置。但是,按照怀特史密斯风格,该块仍在视觉上连接到其控制语句,而不是看起来像是由空格包围的无关代码块。另一个优点是,括号与块的对齐强调了这样一个事实,即整个块在概念上(以及程序上)都是单个复合语句。此外,将花括号缩进强调它们从属于控制语句。

这种样式的一个建议缺点是,结尾括号不再与它在概念上属于的语句对齐。但是,右括号属于左括号,而不属于控制语句。

谢谢IPU,这是我从未见过的练习方式。

Eclipse为c ++内置了Whitesmith代码风格...您可能会为Java所困扰,因为每个人都应该在该语言中使用相同的风格。


4
哦,“谢谢IPU”是什么意思?Google不会告诉我...
2012年


Whitesmiths样式在行尾不包含制表符。除行首以外的任何地方的Tab都是邪恶的,需要用火杀死。
tdammers 2012年

6

您同事的编码风格怪异,丑陋且难以阅读:

  1. 如果您没有编码标准,那么它们的格式与任何标准一样有效。

  2. 如果您每次触摸他们编写的文件时重新格式化他们的代码,就会发现很难跟踪更改-如果您使用VCS执行差异,那么很多(如果不是全部)代码行都会被更改。

这就是为什么您应该拥有编码标准的原因,它使每个人都更容易知道他们应该做什么,并且如果他们没有坚持,那么就更容易证明重新格式化的合理性。

如果他们仍然在您的公司工作,您是否尝试过与他们讨论?


这个人早已不在我的时间里。现在,我们按照Microsoft框架设计指南进行操作。
P.Brian.Mackey,2012年

9
在这种情况下,我建议在进行更改(以使特定更改更容易跟踪)之前,将代码重新格式化作为单独的签入(例如Ctrl K + Ctrl D)进行检入。
布莱恩(Brian)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.