WEB开发网
开发学院软件开发C语言 实用模式:内部域特定语言 阅读

实用模式:内部域特定语言

 2010-09-30 22:42:30 来源:WEB开发网   
核心提示:在过去的几年中,域特定语言 (DSL) 是一个热门主题,实用模式:内部域特定语言,并且将来很可能会越来越重要,您可能一直在参与“Oslo”项目(现在称为 SQL Server Modeling)或使用 ANTLR 等工具来构建“外部”DSL,我越来越频繁地对基本对象(如字

在过去的几年中,域特定语言 (DSL) 是一个热门主题,并且将来很可能会越来越重要。您可能一直在参与“Oslo”项目(现在称为 SQL Server Modeling)或使用 ANTLR 等工具来构建“外部”DSL。此外,还可以使用一种更直接的替代方法,即使用现有编程语言(如 C#)创建“内部”DSL。

对于非开发人员,可以像英文一样阅读外部 DSL,虽然内部 DSL 可能不是如此明确易读,但创建内部 DSL 的机制更加简单,因为您不需要编译器或分析器来外部解读代码。

请注意,我并不是说本文中的 DSL 适合业务专家查看。在本文中,我只重点讲解内部 DSL 的模式如何通过构建易于读写的 API 使我们的工作像开发人员一样简单。

我从我管理和开发的以 C# 编写的两个开源项目中提取出了大量示例。第一个是 StructureMap,它是面向 Microsoft .NET Framework 的控制反转 (IoC) 容器工具之一。第二个是 StoryTeller,这是一个验收测试工具。您可以使用 Subversion 从 https://structuremap.svn.sourceforge.net/svnroot/structuremap/trunk 或 storyteller.tigris.org/svn/storyteller/trunk(需要注册)下载这两个项目的完整源代码。我还建议将 Fluent NHibernate 项目 (fluentnhibernate.org) 作为另一个示例源。

文本扩展

在本文中,我将声明更重要的一点就是可以采用许多小技巧,使代码读起来更清晰、含义更明确。应用这些小技巧后,代码的声明效果更好且含义更加明确,从而更容易正确编写,真正提高您的编码效果。

我越来越频繁地对基本对象(如字符串和数字)使用扩展方法,以减少核心 .NET Framework API 中的重复并提高可读性。这种扩展值对象的模式称为“文本扩展”。

1 2 3 4 5 6  下一页

Tags:实用 模式 内部

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接