灵活性等同于降低质量

有两种相反的心态:“如果有效,那就好”与“如果有效,就行;” 或“使其正常工作”与“使其正确”。 我说的是软件源代码。 我几乎每天都在博客评论中听到以下内容:如果没有这些代码,它们为什么能正常工作,为什么我们需要所有这些新的 OOP原则? 什么是引入一种新的方式,这被认为是点“更好,”如果现有的,传统的,半对象,半程序,不那么完美的做法只是工作

疤面煞星(1983)布赖恩·德·帕尔玛(Brian De Palma)

让我们尝试更大的想法。 不仅涉及面向对象的编程,还涉及软件开发。 有很多“正当可行”心态的例子。

以Perl为例,这是一种以三种不同方式执行任何操作的能力而闻名的编程语言。 这意味着没有一种“正确”的方法。 我不是Perl专家; 这就是为什么我要让您查看以下Ruby代码的原因:

if a > b
  m = 'Hello!'
end

我们可以这样重写它:

m = if a > b
  'Hello!'
end

或这个:

m = 'Hello!' if a > b

还有一个:

m = a > b ? 'Hello' : nil

哪个是“正确的”? 有Perl开发人员吗? 您能否建议其他方法来达到相同的结果?

毫不奇怪,在Java(比Ruby更严格的语言)中,只有一种方法可以做到:

if (a > b) {
  m = "Hello!";
}

好吧,我想我错了。 实际上有两个。 这是第二个:

if (a > b) m = "Hello!";

作为程序员,各种各样的选择给我们带来了什么? 我猜答案将严重取决于我们程序员对代码的处理方式:编写或阅读代码。 同样,这取决于我们正在创建的软件的态度 。 我们要么拥有它(黑客的心态),要么建立它(设计师的心态)。

如果我们正在编写它,并且希望将自己视为代码所有者,那么我们肯定会需要这种语法糖武器库。 我们需要他们向自己证明自己很聪明,当然还要在我们的朋友和那个毫无生气的Ruby解释器前炫耀。

另一方面,如果我们是设计师,并且碰巧读到了充满糖分的代码(“行之有效”),我们会非常烦恼和沮丧。 好吧,也许我必须为自己说话,但我一定会的。

简而言之,更高的质量来自更简单的语言。

这种过于挑剔的Ruby语法是“作品与善良”定位的完美示例。 Ruby的哲学是这样的:只要有效,您的编写方式都无关紧要。 Java哲学是不同的。 它更接近:正确设置,它将起作用。 Ruby中的动态的类型与Java中的强而静态的类型也证明了我的观点。

总的来说,我相信编程语言越灵活,它产生的代码的可维护性(关键的质量特征)就越低。 简而言之,更高的质量来自更简单的语言。

整个软件开发也是如此:我们对程序员的限制越多,他们对“语法创造力”的选择越少,他们编写的软件的质量就越高。 诸如Java的Checkstyle或Ruby的Rubocop之类的静态分析器试图解决该问题并禁止我们使用某些语言功能,但它们却远远落后。 我们非常“有创造力”。

现在,让我们回到最初的OOP问题:如果按原样运行,为什么我们需要改进任何东西? 答案是:现代的OOP(如Java,Ruby和C ++)不会产生高质量的代码,因为它没有强大且受适当限制的范例。 它具有太多的“功能”,这些功能主要由C ++引入,并保留在那里是为了我们相互“方便”。

它们确实可以工作,但是我们生产的软件的可维护性很低。 好吧,如果我们的“创造力”受到限制,它将远低于可能的水平。

翻译自: https://www.javacodegeeks.com/2017/04/flexibility-equates-lower-quality.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值