你讨厌你最喜欢的语言有什么五件事?

Stack Overflow最近出现了一堆Perl讨厌的东西,所以我想我会把Stack Overflow的“五件你讨厌你最喜欢的语言”的问题带到问题上。 拿你最喜欢的语言,告诉我你讨厌的五件事。 那些可能会让你烦恼,承认设计缺陷,认识到性能问题或其他类别。 你只需要讨厌它,它必须是你最喜欢的语言。

不要将它与另一种语言进行比较,也不要谈论你已经讨厌的语言。 不要用你最喜欢的语言谈论你喜欢的事情。 我只是想听到你讨厌但容忍的事情,所以你可以使用其他所有的东西,我想听听你希望别人会用的语言。

每当有人试图将自己喜欢的语言推向我时,我都会问这个问题,有时候也会作为一个面试问题。 如果有人无法找到五件令人讨厌他最喜爱的工具的东西,他不会很好地支持它,或者用它来支付大笔资金。 他没有在足够多的情况下使用它来充分探索它。 他主张它作为一种文化或宗教,这意味着如果我不选择他最喜欢的技术,我错了。

我不在乎你使用哪种语言。 不想使用特定的语言? 那就不要。 你会通过尽职调查做出明智的选择,但仍然不使用它? 精细。 有时候,正确的答案是“你有一个强大的编程团队,他有很好的实践经验并且有很多Bar的经验,换到Foo会很愚蠢。”


这对代码评论来说也是一个很好的问题。 真正了解代码库的人会对此有各种各样的建议,而那些不太了解它的人会有非特定的投诉。 我问一些诸如“如果你可以重新开始这个项目,你会做什么不同?” 在这个梦幻般的土地上,用户和程序员可以抱怨任何他们不喜欢的东西。 “我想要一个更好的界面”,“我想从视图中分离出模型”,“我会用这个模块来代替这个模块”,“我会重命名这组方法”,或者他们真正想要的不喜欢目前的情况。 这就是我如何处理特定开发人员对代码库的了解程度。 这也是一个线索,说明程序员的自我与他告诉我的内容有多大关系。

仇恨并不是解释人们知道多少的唯一方面,但我发现它是一个很好的方法。 他们讨厌的东西也给我提供了他们思考这个问题的思路。


我讨厌Java的五件事:

  • 没有一流的功能。
  • 没有类型推断。
  • 例如图形缺乏合理的默认值。
  • NullPointerException不包含有关什么是null的更多信息。
  • 毫无意义的“可配置”框架/服务提供者接口/工厂类/依赖注入系统的激增。 可配置性几乎从未使用过,DRY被严重违反,代码大小增加了四倍,可读性减半。
  • 我知道,我应该检查斯卡拉。


    哇,我很惊讶SQL还没有成功。 猜猜这意味着没有人喜欢它:)

  • 跨实现的语法不一致
  • 细微的代码差异可能会导致看似模糊的原因带来巨大的性能影响
  • 对文本操作的支持不佳
  • 简单的入门成本,但掌握语言的学习曲线陡峭
  • 在整个社区中实现最佳实践的最低标准化,这包括语法风格。
  • ...还有一些额外的理由恨它,不收取额外费用

  • WHERE子句进入最后,使得过早地执行UPDATE或DELETE变得容易,破坏整个表。 相反,WHERE应该前往某个地方。
  • 实施关系分工很困难。
  • 我可以将值设置为NULL,但我无法测试它是否与NULL相等。 我可以检查IS NULL,但这只是使代码复杂化 - 在我看来,这是不必要的。
  • 为什么我们需要完全重新指定GROUPed列的公式,而不是在列上设置别名,然后在别名(或列索引和SORT)上设置GROUP BY?

  • JavaScript

  • 所有最酷的事情都非常复杂,但是,所有的酷炫事物也都包含在这么少的代码中,以致于你为了努力遵循它而感到愚蠢

  • '+'是弱类型语言连接操作符的荒谬选择。 他们是否试图吓跑新手?

  • 这是一个跨浏览器兼容性雷区(不管它是否打开或不打开)

  • 它通常不受信任 - 与诸如阻止后退按钮,永不死亡的弹出窗口等的sc associated相关。

  • 调试几乎是不可能的,因为只有几个不同的错误消息和一些不同的类型(数字,字符串,对象等)

  • 如果不是用于jQuery的话,我可能仍然会像以前那样讨厌它:)

    链接地址: http://www.djcxy.com/p/20681.html

    上一篇: What are five things you hate about your favorite language?

    下一篇: What do you mean by the expressiveness of a programming language?