language-agnostic - 什么时候抽象和模块化在编程中是一种不好的做法?

标签 language-agnostic abstraction modularization

刚刚在“你使用什么 JS lib”投票中看到了这条评论

“@Xanti - 是的,是的,编程中的模块化和抽象是一种糟糕的做法。调用其他函数的函数?浪费。”

这让我很好奇,因为我使用的是用于 PHP 的 Kohana 框架和用于 javascript 的 Jquery 库。

为什么有些人认为抽象和模块化是不好的做法?框架和库不是用来简化和加速开发的吗?

这是 link投票

最佳答案

我发现过多的抽象可能会危害您的工作效率:

  • 选择不当的抽象可能比没有抽象更糟糕。
  • 如果你需要阅读四五个不同的模块来理解一个简单的算法是如何工作的,那么抽象障碍可能不在正确的地方。也许有一种重构代码的好方法,或者仅仅消除障碍会更容易。
  • 如果抽象不对应一个相对熟悉的想法,新的团队成员可能很难学习。

  • 抽象不是“无意识的善”;它的存在是为了服务于特定目的。其中最常见的目的是
  • 保护不变量 数据结构的
  • 封装可能改变的设计决策

  • 我最大的抽象障碍经验是使用我们的 C 研究编译器——(2008 年的存档快照,位于 https://www.cs.tufts.edu/~nr/c--/)。比学生在编译器课上看到的要多得多的抽象:
  • 目标机器是抽象的
  • 汇编语言是抽象的
  • 调用约定是抽象的
  • 堆栈框架布局使用了一种不寻常的“ block ”抽象

  • 这些抽象中的每一个都为我们的研究提供了重要的目的,但总体效果是新生很难学习编译器。因此,即使最初的评论是开玩笑的,也有抽象可能导致问题的地方。

    关于language-agnostic - 什么时候抽象和模块化在编程中是一种不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338656/

    相关文章:

    java - 我应该扩展 ArrayList 以添加不为空的属性吗?

    在 D 中重构模块化结构

    javascript - 我怎样才能把这个匿名函数变成一个命名函数,这样我就可以把它移到一个外部 JS 文件中以便重用

    language-agnostic - 那么,数据结构与算法类(class)到底真的有用吗?

    javascript - 在什么样的代码中 `typeof NaN` 是 'number' 才有意义

    java - Http 客户端抽象层

    java - API设计建议

    c - 用 C 语言构建模块化库

    math - 矩形——一道数学题

    algorithm - 渐进式连通分量标记