注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Dotnet >> ASP.NET >> Dotnet正文

LINQ框架设计指南

文章来源:中国IT实验室收集整理 作者:佚名 更新时间:2008-4-24 12:51:09 【 】 【加入收藏

    如今,LINQ的版本发布已经尘埃落定,是时候思考如何使用它了。Keith Farmer甚至谈到了使用LINQ以消除子类。不过,在我们了解这些之前,还是先看看微软的官方指南吧。

    根据框架设计指南的精神,微软发布了基于LINQ构建框架的设计指南。LINQ框架设计指南涵盖了诸如API的设计与行为等主题。与很多公司制定的编码指南不同,它并没有包含设计的细枝末节,例如命名模式与格式,除非它们牵涉到公有的API库。

    大多数框架设计指南最终都能够找到与FxCOP集成的方式。FxCOP是一个代码分析工具,它被微软和其它公司用来确保编码的一致性。

    在概括的介绍之后,该文档介绍了扩展方法(Extension Methods)和泛型委托Func、Action以及Expression.在指南给出的标准警告中,有一个与命名空间冲突无关的指导——它要求在普通方法能够实现的情况下,不要滥用扩展方法。当两个库都公开了相同类型的扩展方法时,会发生方法名称的冲突。一旦发生,只能导入一个库,另一个库则必须使用完整的名称才能被引用。

    在扩展LINQ一节中,对于如何命名泛型类型有一个颇有助益的建议。在类型名为S以指代包含元素项的集合时,名为T的泛型类型总是指代集合的元素项(items)。虽然这不是强制性的,但至少有助于阅读内建方法(built-in methods)。

    对于性能,指南提出的一个建议是,如果性能牵涉到计算集合的元素总数,则实现ICollection有助于提高性能。当你只能实现IEnumerable时,就必须遍历整个集合才能得到集合的元素总数。

    现在,再回头看看Keith Farmer提到的避免子类的方法:

    我过去一直在考虑的一件事情是削减类的职责,使其只具备基本的定义:恰如其分的属性定义,与属性对应的方法,以及构造器和类型转换器。

    然后使用扩展方法定义适当的操作,而不需要维护类作为自身实体的概念,这样就没有必要创建子类型了(即使子类型是可行的)。

    例如,一个Node不需要知道Graph的操作也能够工作良好,也可以认为Graph不需要了解IsNetworkRouter的内容。

    在这种情况下,类似于Traverse(GraphLink)这样的方法就属于Graph中很好的方法定义,而类似于FindLeastWorkRoute(Node, Node)这样的方法,由于它依赖于GraphLink的特定子类型的实现细节(即它具有一个关联的Work衡量标准),那么在我看来,这样的方法最好定义为一个扩展方法。

    如果仅仅是为了实现应用程序特定的逻辑,而去创建一个自定义子类型,就会扰乱我们关注的类(例如,Graph就胜过同时定义Graph和GraphLink),而通过扩展方法就可以避免这样的情况。

    这在。NET编程环境下是有意义的吗?它是否遵循了微软的设计原则呢?或者对它而言,有多少是与这些指南相关的呢?

  • 上一篇Dotnet:

  • 下一篇Dotnet:
  • 最 新 热 门
     Silverlight初试牛刀 微软下一代Web技术
     什么是XML
     XML WebService实例详细解析
     .NET开发程序员必备工具-- NUnit
     根据托管类库创建WebService代码
     WSXL介绍
     WSlF简介
     VB连接Excel文件
     ASP.NET的文件类型
     IIS服务器不支持ASP.NET的解决办法
    最 新 推 荐
     ASP.NET的文件类型
     IIS服务器不支持ASP.NET的解决办法
     使用ASP.NET 2.0中的ReportViewer控件
     专家解析Asp.Net木马文件操作
     ASP.NET MVC 源码更新预览
     ASP.NET(C#)经典采集代码
     ASP.NET购物车代码程序
     ASP.NET生成静态页面和分页代码
     Asp.Net之枚举类型输出需要类型转换
     DataAdapter对象
    相 关 文 章

    Silverlight初试牛刀 微软下一代Web技术
    何时使用DataGrid、DataList 或Repeater
    LINQ下使用三层架构的数据统计以及一个主从…
    C#中的DBNull、Null、和String.Empty解释
    C#中改变listbox的item颜色的方法
    C#彻底解决listview的闪屏问题
    spring 中加载xml配置文件的方式
    TinyXML中节点和元素的关系
    用WatiN对ASP.NET页面进行单元测试
    LINQ 实现常见SQL查询

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用