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

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

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

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


当前回答

90%的程序员都是非常糟糕的程序员,实际上我们所有人都没有任何工具来评估我们当前的能力水平(尽管我们通常可以回顾过去并意识到我们曾经是多么糟糕)

我不打算发布这个,因为它会惹恼所有人,我并不是真的想要一个负分或其他什么,但是:

A,这不是问题的重点吗

B)这个帖子中的大多数“答案”都证明了这一点

前几天我听到一个很好的类比:编程能力的差异至少和运动能力一样大。我们当中有多少人可以加入一个职业球队,并真正提高他们的机会?

其他回答

记录器配置是浪费时间。如果这意味着学习一种新的语法,尤其是一种无声地失败的语法,为什么要有它们呢?不要误解我,我喜欢好的伐木。我喜欢日志记录器的继承和向日志记录器的处理程序添加格式化程序。但是为什么要在配置文件中进行呢?

您希望在不重新编译的情况下对日志代码进行更改吗?为什么?如果您将日志代码放在单独的类、文件中,会有什么不同呢?

您是否希望将可配置的日志与您的产品一起分发给客户端?这不是提供了太多信息吗?

最令人沮丧的是,用流行语言编写的流行实用程序往往会按照该语言指定的格式编写良好的api。编写一个Java日志实用程序,我知道您已经生成了javadocs,我知道如何导航。为您的日志记录器配置编写一种特定于域的语言,我们有什么?也许有文件,但到底哪里去了?你来决定怎么组织,我对你的思路不感兴趣。

代码越少越好!

如果用户说“就这样?”,而你的工作仍然是隐形的,那么你的工作就做对了。荣耀可以在其他地方找到。

我有争议的观点是,“While”结构应该从所有编程语言中删除。

你可以很容易地复制而使用“重复”和一个布尔标志,我只是不相信这是有用的,有两个结构。事实上,我认为同时拥有“重复……”直到”和“While..”一种语言中的EndWhile”会让新程序员感到困惑。

更新-额外说明

新程序员在使用While时常犯的一个错误是,他们认为一旦测试条件标记为false,代码就会中断。因此,如果While测试在代码进行到一半时标记为假,则假定While循环爆发。使用Repeat时就不会犯这么多错误。

只要只有一个循环类型,我实际上并不关心这两个循环类型中哪一个被保留。我选择Repeat而不是While的另一个原因是“While”功能用“Repeat”写比用“While”写更有意义。

第二次更新: 我猜,我是目前唯一一个得分为负的人,这意味着这实际上是一个有争议的观点。(不像你们其他人。哈!)

SESE (Single Entry Single Exit)不是法律

例子:

public int foo() {
   if( someCondition ) {
      return 0;
   }

   return -1;
}

vs:

public int foo() {
   int returnValue = -1;

   if( someCondition ) {
      returnValue = 0;
   }

   return returnValue;
}

我和我的团队发现,在很多情况下,一直遵守这一点实际上会适得其反。

To Be A Good Programmer really requires working in multiple aspects of the field: Application development, Systems (Kernel) work, User Interface Design, Database, and so on. There are certain approaches common to all, and certain approaches that are specific to one aspect of the job. You need to learn how to program Java like a Java coder, not like a C++ coder and vice versa. User Interface design is really hard, and uses a different part of your brain than coding, but implementing that UI in code is yet another skill as well. It is not just that there is no "one" approach to coding, but there is not just one type of coding.