ste*_*tej 5 .net c# coding-style
我的同事告诉我,基于表格的代码格式很糟糕,而且没有可读性,我应该遵循惯例.基于表格的格式有什么不好?为什么禁止它?
我问,因为对我来说它更具可读性.
示例(不是真实代码):
if (res == ResultType.Failure)
something = ProcessFailure(..);
if (res == ResultType.ScheduledAndMonitored)
something = DoSomething(...) && DoSomething3(..);
if (res == ResultType.MoreInfoAvailable)
info = GetInfo(..);
if (res == ResultType.OK && someCondition)
something = DoSomething2(..);
.... continued
Run Code Online (Sandbox Code Playgroud)
与
if (res == ResultType.Failure) something = ProcessFailure(..);
if (res == ResultType.ScheduledAndMonitored) something = DoSomething(...) && DoSomething3(..);
if (res == ResultType.MoreInfoAvailable) info = GetInfo(..);
if (res == ResultType.OK && someCondition) something = DoSomething2(..);
.... continued
Run Code Online (Sandbox Code Playgroud)
为什么我认为第二个更好:
更新:这不是真正的代码.我只想展示一些例子.考虑它就像是一个旧代码,有人在前一段时间写过,你需要阅读它.为什么第一种格式优先于第二种?
Pet*_*ore 13
当你的同事说你应该遵循惯例时,这是否意味着你的团队有格式约定?如果是这样的话,那就足够了.当每个人以相同的方式格式化他们的代码时,更容易阅读你的队友的代码.
您描述的"基于表格"的布局在某些情况下非常有用:
public string GetMessageFromErrorCode(int code)
{
switch (code)
{
case 1: return "OK";
case 2: return "Syntax Error";
case 3: return "Other error";
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,此示例是c#规则的有效例外,"所有case语句也必须包含break".
我不喜欢对代码布局严格要求.遵循编码标准是一件好事.但是一旦你开始做一些事情,比如在函数调用中使用带有长名称的几个参数,编写linq查询,或使用匿名方法或复杂的lambda语句,它可以使你的代码更具可读性,不时违反规则.
另请参阅:
匿名方法/ Lambda(编码标准)
原因很简单.
如果你使用空格来缩进所有内容,并使其成为阵容,那么当变量或条件发生变化时保持内联是一件痛苦的事.您必须手动进入并添加/删除空格.
如果您使用制表符缩进所有内容并使其成为阵容,则在每个人的计算机上看起来都不一样,因为不是每个人都将其标签设置为相同的宽度.有些人将它们设置为3个字符,其他人设置为5个字符,其他人设置不同 在你的机器上看起来漂亮整洁,"像桌子一样"看起来像是乱七八糟.
在if执行的语句周围抛出大括号,并正常格式化.
if (res == ResultType.Failure)
{
something = ProcessFailure(..);
}
if (res == ResultType.ScheduledAndMonitored)
{
something = DoSomething(...) && DoSomething3(..);
}
if (res == ResultType.MoreInfoAvailable)
{
info = GetInfo(..);
}
if (res == ResultType.OK && someCondition)
{
something = DoSomething2(..);
}
Run Code Online (Sandbox Code Playgroud)
哦,另一个原因是,并非每个人都使用固定的字体进行编程.信不信由你,一些开发人员使用比例字体.