2012-11-09 36 views
2

有没有可以阅读破线规则以保留在列内的指南?线拆分规则

我有下面的代码,我的页边距设置为80个字符(使之适合A4纸当我打印):

IDictionary<string, object> columns = new Dictionary<string, object>(1); 

的括号在第80列刚落下。所以,我要打破它,就像这样:

IDictionary<string, object> columns = new Dictionary<string, object> 
    (1); 

或本:

IDictionary<string, object> columns = new Dictionary 
    <string, object>(1); 

或本:

IDictionary<string, object> columns = 
    new Dictionary<string, object>(1); 

或任何其他方式?我不想增加保证金。

谢谢。

+2

真的没关系,但使用var会缩短这些声明。 –

+0

@MitchWheat如果这是一个字段初始值设定项,则不能使用var。它也会改变它的意义(总是),因为它被设置为一个接口。 –

+0

看起来不像字段初始化...但真的我错过了接口位.... –

回答

3

80个字符是不是法律 - 这是很高兴有。而最好的办法是在这里:

var columns = new Dictionary<string, object>(1); 

决不中断类型名,泛型参数,开放托架(这是确定继续对下一行,如果你有很多参数)。因此,选项也(最好的一个 - 忘掉80个字符,并把所有成一行):

IDictionary<string, object> columns = new Dictionary<string, object>(1); 

和(如果行是真的长)

IDictionary<string, object> columns = 
     new Dictionary<string, object>(1); 

或分割转让和申报

IDictionary<string, object> columns; 
columns = new Dictionary<string, object>(1); 
+0

请注意,在这种情况下,这确实会改变含义。 (这可能没有关系,但这与原来的声明不一样) –

+0

@ReedCopsey你是指最后一个?是的,它只会用于局部变量。 –

+0

我的意思是第一个(使用var),因为它分配给接口,而不是类型。使用'var'会导致它创建变量为'Dictionary ',而不是'IDictionary '... –

3

这实际上是个人偏好和惯例的问题。

我的选择,如果你一定要拆,将是你最后的选择:

IDictionary<string, object> columns = 
    new Dictionary<string, object>(1); 

我只说,因为其他选项全部剥离在表达式中 - 在第一种情况下,你是将构造函数参数拆分为自己的行,第二个将类型定义分成两行。在这种情况下,整个语句(带参数的构造函数)保持在一起。

这就是说,我可能不会分裂这一般。我可能会让它流血超过80个字符(通常没有任何问题)。