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

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

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

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


当前回答

在. net上开发不是编程。它只是把其他人的代码拼接在一起。

我的编码背景要求你了解硬件,这在我的行业中仍然是一个至关重要的要求,我认为高级语言只是简单地组装别人的工作。这并没有什么本质上的错误,但这是“编程”吗?

微软在为“开发人员”提供符号指令语法方面做了很多艰苦的工作。我现在似乎认识了越来越多的开发人员,他们在执行工作时似乎受到类的存在或不存在的限制。

我的观点来自于这样一个概念:作为一名程序员,你应该能够在你的平台允许的最低水平上编程。因此,如果您正在编写。net程序,那么您需要能够埋头苦干并找出解决方案,而不是依赖于其他人为您创建一个类。在我看来,这是一种懒惰,不符合“发展”的标准。

其他回答

使用较短的变量名是可以的

但不是嵌套循环中的索引。

观点:数据驱动的设计本末倒置。它应该立即从我们的思想中消除。

绝大多数软件不是关于数据的,而是关于我们试图为客户解决的业务问题。它是关于一个问题域的,涉及对象、规则、流程、案例和关系。

当我们从数据开始设计,并根据数据和数据之间的关系(表、外键和x-to-x关系)对系统的其余部分建模时,我们将整个应用程序限制为如何在数据库中存储数据和如何从数据库中检索数据。此外,我们将数据库体系结构公开给软件。

数据库模式是一个实现细节。我们应该可以自由地改变它,而不需要对我们的软件设计进行任何显著的改变。业务层不应该知道表是如何设置的,或者是从视图中提取还是从表中提取,或者是从动态SQL或存储过程中获取表。这种类型的代码永远不应该出现在表示层中。

软件是用来解决业务问题的。我们要处理用户、汽车、帐户、余额、平均值、摘要、转账、动物、消息、包裹、购物车、订单和其他各种真实的有形对象,以及我们可以对它们执行的操作。我们需要根据需要保存、加载、更新、查找和删除这些项。有时候,我们必须以特殊的方式来做这些事情。

But there's no real compelling reason that we should take the work that should be done in the database and move it away from the data and put it in the source code, potentially on a separate machine (introducing network traffic and degrading performance). Doing so means turning our backs on the decades of work that has already been done to improve the performance of stored procedures and functions built into databases. The argument that stored procedures introduce "yet another API" to be manged is specious: of course it does; that API is a facade that shields you from the database schema, including the intricate details of primary and foreign keys, transactions, cursors, and so on, and it prevents you from having to splice SQL together in your source code.

把马放回马车前面。思考问题领域,并围绕它设计解决方案。然后,从问题域导出数据。

这个怎么样:

垃圾收集器实际上会损害程序员的工作效率,并使资源泄漏更难发现和修复

请注意,我谈论的是一般的资源,而不仅仅是内存。

没有“放之四海而皆准”的发展方法

我很惊讶这是一个有争议的观点,因为在我看来这是常识。然而,在热门博客上有许多文章都在推广“一刀切”的开发方法,所以我认为我可能只是少数。

我所见过的被吹捧为任何项目的正确方法的东西——在了解任何关于它的信息之前——像使用测试驱动开发(TDD)、领域驱动设计(DDD)、对象关系映射(ORM)、敏捷(大A)、面向对象(OO)等等,等等,包括从方法到架构到组件的一切。当然,这些都是很有市场价值的首字母缩写。

人们甚至似乎在他们的博客上贴上徽章,比如“我是测试驱动的”或类似的东西,就好像他们严格坚持单一的方法,不管项目的细节是什么,实际上是一件好事。

它不是。

选择正确的方法、体系结构和组件,等等,是应该在每个项目的基础上完成的事情,不仅取决于您正在从事的项目的类型及其独特的需求,而且还取决于与您一起工作的团队的规模和能力。

我不明白为什么人们认为Java绝对是大学里最好的“首选”编程语言。

首先,我认为第一种编程语言应该强调学习控制流和变量的必要性,而不是对象和语法

另一方面,我相信没有在C / c++中调试内存泄漏经验的人无法完全理解Java带来的好处。

同样,自然的进展应该是从“我怎么能做这个”到“我怎么能找到做那个的库”,而不是相反。