刚才看到这一意见在"什么JS lib你使用"调查

"@Xanti-是的,是的,模块化和抽象编程是一种可怕的做法。功能,这一呼吁的其他职能?浪费。"

这让我很好奇因为我使用Kohana框架PHP和技库javascript。

为什么有些人认为抽象和模块化的不良做法?不框架和图书馆作出以方便和加速发展?

这里有一个 链接 来投票

有帮助吗?

解决方案

我们发现,太多的抽象可能危害到你的生产力:

  • 一个选择不当的抽象可能会更糟,然后没有抽象的。

  • 如果你需要读四个或五个不同模块,以便了解怎么一个简单的算法的工作,那么抽象的障碍可能是不合适的地方。也许有一个很好的方式来重构代码,或者也许会更容易,只是要去除的障碍。

  • 如果抽象并不对应于一个相对较熟悉的想法,它可能是困难的新队员要学习。

抽象不是一个"盲目优秀";它的存在是为了服务于特定目的。其中最常见的目的是

  • 保护不变 数据结构

  • 封装的设计决定,可能会有变化

我最大的经验抽象的方式获得与我们的研究编译器 C--.有一个大得多的抽象学生相比,用于看到在编译器类:

  • 目标机抽象
  • 大会的语言是抽象
  • 叫公约摘要
  • 堆框架的布局使用一个不寻常的"区块"抽象

这些抽象提供一个重要的目的,用于我们的研究,但总的效果是,它是 非常 困难的新学生学习的编译器。因此,即使原始的意见是在开玩笑, 地方抽象可能会造成问题。

其他提示

上有限的资源工作时,它可以很容易地增加开销。

肯定有东西编译器将优化掉,但是如果你创建四个整齐的.c文件的四种整齐的对象,他们编到四个整齐的.so文件,然后将它们与一个哑巴接头连接,跨模块的函数调用,可以可以容易地内联仍与满状态转储,能够被优化掉完全仍在执行,制成块等。

我向你保证,如果你开始与4K RAM编程的8位PIC单片机和使用16K闪存的面向对象语言的最佳实践,采用先进的设计模式,并创造了超过一个抽象层,你的程序将永远不会运行。 “过早的优化是万恶之根”是由谁没有编程为具有128个字节的RAM平台的家伙说。

我们或许可以认为该评论者没有被严重。

我无法想象任何人声称模块化和抽象是不好的做法,实际上这意味着它。

抽象和一般模块化是好的,是必不可少的。有可能是坏的抽象那里,e.g:框架它们不再支持或昂贵,或只是无法使用,或大,或过期,或第二选择,等等。库“市场”一般是巨大的。哪一种你发现自己使用的库取决于环境和个人喜好。

  

为什么有些人认为抽象和模块化不好的做法?是不是框架和   库由缓和和加速发展?

变革和学习,有时很难 - 所以人们打它。如果你喜欢研究这种,你可以开始你的研究: http://thedailywtf.com/ : - )我不理会他们,并利用库和框架,因为他们为您服务,让您的程序员的生活更美好。

一个显影剂会声称的抽象或模块化是,它们可以或需要与所述抽象或模块化相互作用,也就无法理解其目的或设计一种不好的做法。

当每个函数(和辅助功能)是其自身的模块中?

这是安静的一段时间以前,但一个手册fortran编译器推荐的选择标识符作为串的长度相同,随机选择的信件。

解释?它允许甚至分发的名内部编译器hashtable并为此提供了更快的汇编。

我认为,该文本引用属于正确的下一步,这个建议

好的抽象是经常使用

好的抽象概念被引用,在2个或更多的地方在你的软件。

实例:

  • 职能2+电话网站。
  • 抽象的类有2+具体课程。
  • 接口有2+实现。
  • 仿制药有2+实例
  • 图书馆有2+用户。
  • 等等。

一个抽象的概念,引用在2个或更多的地方,有助于减少代码尺寸,由保理业务的共同的东西,这是一件好事。

但是,如果你有一个很大的抽象概念中引用的唯一一个单一的时间,然后有 是一个很好的机会,抽象不是必要的。

一些实例时不必要的抽象来:

  • 写作对象的快乐代码(接口和抽象的类无处不在只有1执行情况或结石).这些接口的和抽象的课程不是必要的(在这一点的发展)。YAGNI原则。
  • 有人建立一个"崭新的"接口在老一个,那里的新职能后,一些转换只有通话的老式接口。你可以想像一个大混乱的结果是,如果重复这几次。在这种情况下,旧的功能,将有一个单一的呼吁的网站,所以它们不是必要的。你需要移动的代码从旧的职能进入新的或不写新的和修改旧的一个。

一些例子真的很好的抽象:

  • 硬件的抽象层:提供一个单一的接口,以应用程序,以便他们不需要制定代码,用于每种类型的硬件。
  • 文件系统:不要紧,你使用脂肪,新技术文件系统,EXT3什么的。它可以让你使用文件和目录、文件系统的驾驶员没有休息。
  • C语言:你不需要口程序的每个CPU架构。只是汇编。

所以回答你的问题的务实: 抽象都是不好的,当他们被引用,从不到2个地方.

关于模块化、其主观的:你可以组织你的代码任何你想要的。如果你的图书馆的源代码是在一个单一来源文件,它不能让它更糟糕的是,比如果你把爆炸,这几个数以百计的文件。

当评价你的抽象,因为好的或坏的,总是考虑大幅画:整个项目时,整个产品线,等等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top