代码之家  ›  专栏  ›  技术社区  ›  pistacchio

抽象与否?

  •  1
  • pistacchio  · 技术社区  · 15 年前

    前几天,我偶然发现了一篇由Linus Torwalds写的相当古老的usenet帖子。这是一个臭名昭著的“你充满了斗牛士”的帖子,他为自己选择用纯C来代替更现代的Git而辩护。

    特别地 this post 让我想到了大量的抽象层,它们在我工作的地方一层一层地积累起来。我的是Windows.Net环境。我必须说,我喜欢C#和.Net环境,它确实使大多数事情变得简单。

    作为一个非常简单的例子,对于我在这里做的第一个项目,我需要为一个应用程序进行一些配置。我创建了一个10行类来加载和解析一个txt文件,该文件位于程序的根目录中,其中包含以冒号分隔的键/值对,每行一个。成功了。

    最后,为了使解决配置问题的方法标准化,我们现在在运行每个已配置程序的每台计算机上都有一个库,该程序调用一个服务,该服务在启动时加载一个xml,其中包含对其他xml的引用,每个应用程序一个xml,其中包含配置本身。

    现在,它是可扩展的,由可重用的抽象、提供者和所有东西组成,但是我仍然认为,如果有一天我们真的重用了其中的一部分,并且花了时间来完成它,那么我们可以从一开始就生成所需的代码,或者复制/超越旧代码并对其进行修改。

    你对此有什么看法?你能指出一些处理这个问题的有趣的参考资料吗?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Yttrill    13 年前

    简单的回答:编程语言提供数据结构和组合它们的方法。一开始直接使用,不要抽象。如果您发现您需要维护的表示不变量由于可能在您的控制范围之外的大量使用站点而很有可能被破坏,那么请考虑抽象。

    一个“极端编程”版本:不要抽象,直到你有测试用例,打破你的程序。如果您认为不变量可能会被破坏,请先写出破坏它的情况。

        2
  •  0
  •   Charles Stewart    15 年前

    托瓦尔兹的立场并不荒谬,但他是一个极端分子。