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

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

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

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


当前回答

编程是如此简单,一个五岁的孩子都能做到。

编程本身并不难,这是常识。你只是在告诉计算机该做什么。你不是天才,别自以为是了。

其他回答

得墨忒耳定律,在聚合和组合的背景下考虑,是一种反模式。

工具、方法论、模式、框架等等都不能代替一个训练有素的程序员

我厌倦了与那些认为最新的工具、方法、模式或框架是一颗银弹的人(主要是经理)打交道,他们可以消除雇佣有经验的开发人员来编写软件的需求。不过,作为一名以拯救风险项目为生的顾问,我不应该抱怨。

依赖管理软件弊大于利

我在Java项目中工作过,其中包括超过100个不同的库。在大多数情况下,每个库都有自己的依赖项,而这些依赖库也有自己的依赖项。

像Maven或Ivy这样的软件应该通过自动获取每个库的正确版本,然后递归获取其所有依赖项来“管理”这个问题。

问题解决了,对吧?

错了。

下载库是依赖项管理的简单部分。困难的部分是创建软件的心理模型,以及它如何与所有这些库交互。

我不受欢迎的观点是:

如果你不能口头解释,在你的头脑中,你的项目中所有库之间的基本交互,你应该消除依赖直到你可以。

同样地,如果列出从某个函数直接或间接调用的所有库(及其方法)所用的时间超过10秒,那么您在管理依赖关系方面做得很差。

您应该能够轻松回答“我的应用程序的哪些部分实际上依赖于库XYZ?”

当前的依赖关系管理工具弊大于利,因为它们很容易创建极其复杂的依赖关系图,而且它们实际上没有提供减少依赖关系或识别问题的功能。

我见过开发人员包含了10或20 MB的库,在项目中引入了数千个依赖类,只是为了消除几十行简单的自定义代码。

使用库和框架是很好的。但成本总是存在的,掩盖成本的工具本身就是有问题的。

此外,有时(注意:当然不总是)通过编写一些小的类来实现您所需要的东西比引入对大型通用库的依赖更好。

一幅画不如一千个词。

有些图片可能胜过千言万语。大多数都不是。这句陈词滥调大多是不真实的,是许多懒惰的经理的可悲借口,他们不想仔细阅读创建的报告和文档,说“我需要你在图表中展示给我看”。

我妻子学的是语言学专业,她看到了一些关于图片和标志的令人着迷的证据:它们不能打破语言和文化的障碍,它们通常不能像正确的文本那样传达那么多的信息,它们根本不能取代真正的交流。

特别是,如果线条未被标记且无法解释,并且/或如果每一行都有不同的含义而不是表示相同的关系(除非以某种方式彼此区分),那么与线条连接的标记气泡是无用的。如果你的线条有时表示关系,有时表示动作,有时表示时间的流逝,你就真的完蛋了。

每个优秀的程序员都知道你使用的工具适合手头的工作,对吗?并不是所有的系统都最好用图片来说明和记录。图形化规范语言可以自动转换为可证明正确的可执行代码或任何东西,这是一个了不起的想法,如果这样的东西存在的话。在适当的时候使用它们,而不是在阳光下的所有事情上。实体-关系图很棒。但并不是所有的事情都可以用一张图片来概括。

注:一张桌子可能值同等重量的金子。但是表格和图片不是一回事。同样,一篇精心设计的短散文段落可能更适合手头的工作。

软件开发只是一份工作

不要误解我,我非常喜欢软件开发。在过去的几年里,我写了一篇关于这个主题的博客。我在这里花了足够的时间获得了5000声望点。我在一家初创公司工作,通常每周工作60个小时,工资比我作为承包商的工资要少得多,因为团队很棒,工作很有趣。

但从大局来看,这只是一份工作。

它的重要性低于许多事情,如家庭、女朋友、朋友、幸福等,也低于其他如果我有无限的现金供应,我宁愿做的事情,如骑摩托车、驾驶游艇或滑雪。

我认为有时候许多开发者忘记了开发只是让我们拥有生活中更重要的东西(通过做一些我们喜欢的事情来拥有它们),而不是最终目标本身。