【发布时间】:2009-03-30 12:01:50
【问题描述】:
C# 3.0 中引入了许多让我感到不安的特性,例如对象初始化器、扩展方法和隐式类型变量。现在在 C# 4.0 中,我越来越担心动态关键字之类的东西。
我知道这些功能中的每一个都可以以适当的方式使用但是在我看来,它们使开发人员更容易做出错误的编码决定,从而编写更糟糕的代码.在我看来,微软正试图通过使编码变得简单和不苛刻来赢得市场份额。就我个人而言,我更喜欢一种严谨的语言,它对我的编码标准提出了更高的要求,并迫使我以 OOP 方式构建事物。
以下是我对上述功能的担忧的几个示例:
对象构造函数可以执行不暴露给消费者的重要逻辑。这是在对象开发者的控制之下。对象初始化器取消了这种控制,并允许使用者决定初始化哪些字段。
编辑:我没有意识到你可以混合构造函数和初始化程序(我的错),但这在我看来开始变得混乱,所以我仍然不相信这是向前迈出的一步。
允许开发人员使用扩展方法扩展内置类型允许所有人开始将他们最喜欢的宠物方法添加到字符串类中,这可能会导致令人眼花缭乱的选项数组,或者需要对编码标准进行更多监管才能除草这些都出来了。
允许隐式类型变量允许快速而肮脏的编程,而不是正确的 OOP 方法,这可能很快成为整个应用程序中难以管理的变量。
我的担心有道理吗?
【问题讨论】:
-
RobW :您应该重新表述您的问题。 “微软是对的吗”是有争议的,而“你如何处理 c# 的新特性才不会导致代码写得不好”不是
-
好的,试试吧!不是想争论,这就是为什么我举了我的观点的例子,我对其他开发人员的想法很感兴趣。
-
这也是一个“讨论”问题,没有明确的答案(只有意见),因此社区 wiki 是合适的。
-
如果是这种情况,我会投票重新开放。
-
@RobW - 我更喜欢严谨、纪律严明且具有更高标准的开发人员,而不是强制执行此类行为的语言。您描述的开发人员会找到编写糟糕代码的方法;该死的语言。
标签: c# coding-style