这绝对是主观的,但我想尽量避免它变成争论。我认为如果人们恰当地对待它,这将是一个有趣的问题。

这个问题的想法来自于我对“你最讨厌的语言的哪五件事?”问题的回答。我认为c#中的类在默认情况下应该是密封的——我不会把我的理由放在这个问题上,但我可能会写一个更完整的解释来回答这个问题。我对评论中的讨论热度感到惊讶(目前有25条评论)。

那么,你有什么有争议的观点?我宁愿避免那些基于相对较少的基础而导致相当宗教的事情(例如,大括号放置),但例如可能包括“单元测试实际上并没有多大帮助”或“公共字段确实是可以的”之类的事情。重要的是(至少对我来说)你的观点背后是有理由的。

请提出你的观点和理由——我鼓励人们投票给那些有充分论证和有趣的观点,不管你是否恰好同意这些观点。


当前回答

避免压痕。

使用早期返回,继续或中断。

而不是:

if (passed != NULL)
{
   for(x in list)
   {
      if (peter)
      {
          print "peter";
          more code.
          ..
          ..
      }
      else
      {
          print "no peter?!"
      }
   }
}

do:

if (pPassed==NULL)
    return false;

for(x in list)
{
   if (!peter)
   {
       print "no peter?!"
       continue;
   }

   print "peter";
   more code.
   ..
   ..
}

其他回答

goto有一些(非常少)合法的用途(特别是在C中,作为异常处理的替身)。

软件工程师不应该和计算机科学家一起工作

他们的区别: se关心代码的可重用性,而CSs只关心代码 se关心性能,而CSs只想现在就把事情做好 se关心整个结构,而CSs则不在乎 ...

当我声称代码只是我的设计的一种表达时,我经常被人大声叫嚷。我非常不喜欢看到许多开发人员在编写代码时“匆匆忙忙”地设计系统。

当其中一个牛仔从马上摔下来时所浪费的时间和精力是惊人的,而且他们遇到的问题十有八九只要前期设计工作就能解决。

我觉得现代方法没有强调设计在整个软件开发过程中的重要性。例如,当你甚至还没有审查你的设计时,对代码审查的重要性!这是疯狂。

你应该一直使用的唯一“最佳实践”是“动动脑子”。

太多人跳上了太多的潮流车,试图把方法、模式、框架等强加到不值得他们去做的事情上。仅仅因为某事是新的,或者因为受人尊敬的人有意见,并不意味着它适合所有人:)

编辑: 澄清一下——我认为人们不应该忽视最佳实践、有价值的意见等。只是人们不应该盲目地扑向某样东西,而不去思考为什么这个“东西”这么棒,它是否适用于我正在做的事情,它会带来什么好处/缺点?

这里有一个多年来对我来说似乎是显而易见的,但对其他人来说却是一个诅咒:在“发布”版本中使用NDEBUG关闭C(或c++)断言几乎总是一个错误。(唯一的例外是时间或空间惩罚是不可接受的)。

原理:如果断言失败,则程序进入了一种状态

从未被检验过 开发人员无法为恢复策略编写代码 开发人员有效地将其记录为不可思议的。

然而,在某种程度上,“行业最佳实践”是,当涉及到客户数据的实时运行时,事情应该只是敷衍了事,期待最好的结果。