澄海3c技巧:在 C# 3中编写流畅接口的技巧(fluent writing)

我在一些很好的技巧在 C # 中流畅的界面。我只是自己学习它,但渴望听到别人在我正在阅读的文章之外的想法。特别是我之后:

什么时候流利太多了?

有流利的图案吗?

什么是在 C # 中,使流畅的接口更流畅(例如扩展方法)

复杂的流畅界面还是流畅的?

重构以获得流畅的界面或重构现有的流畅界面

任何好的例子在那里,你有工作或可以推荐?

如果你可以发布一个提示或想法,或者每个帖子的任何内容。我也想看看他们是如何被投票的。

提前谢谢你。

27

作为流畅界面的消费者,我遇到的最大挑战是,它们中的大多数并不是真正的流畅界面-相反,它们实际上是我所说的“清晰界面”的实例。

流畅的界面意味着它的主要目标是使它更容易说话,而清晰的界面意味着它的主要目标是易于阅读。

Assert().That().This(actual).Is().Equal().To(expected).
    Except().If(x => x.GreaterThan(10));

...比实际编写代码更容易阅读!

18

关于你的第四点;

是的,我认为一个复杂的流畅界面仍然可以流畅。

我认为流畅的界面在某种程度上是一种妥协。(尽管是一个很好的选择!)已经有很多关于使用自然语言进行编程的研究,通常自然语言不足以精确地表达程序。

Fluent 接口的构造使它们像编程语言一样编写,只允许你用自然语言表达的一小部分,但它们读起来像自然语言。

例如,如果您查看犀牛嘲笑,则与普通库相比,编写部分变得复杂。由于界面流畅,我花了更长的时间来学习,但它使代码更容易阅读。因为程序通常只写一次,并且不止一次阅读,这是一个很好的权衡。

因此,为了证明我的观点。编写复杂但易于阅读的流畅界面仍然可以流畅。

11

当使用继承和流畅的接口时,你会碰到一块砖,因为使用多态方你的调用链,你绝对不想通过使用不需要的丑陋的铸造和偏执狂来使你的接口不流畅。

8

Moq 隐藏了未释放的方法,如 equals,ToString等,以使其流畅的界面更易于使用。

Hiding System Object是一篇解释这样做的好处的文章。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(234)
C++断点:断点如何在 C++代码中工作(breakpoint c++)
上一篇
C2dm函数:C2DM不稳定或某种限制 (unstableness)
下一篇

相关推荐

  • cshtml教程:C# Razor 语法教程

    示例示例cshtml教程cshtml是一种基于Razor语法的ASP.NET视图引擎,用于创建动态Web页面。它使用C#或Visual Basic代码和HTML标记来构建Web应用程序的用户界面。…

    2023-02-10 06:49:58
    0 48 78
  • C语言可视化窗口:C# 声音可视化(audio responsive visualizer)

    关于C语言可视化窗口的问题,在audio responsive visualizer中经常遇到,我想使用 C # 语言和.NET Framework 创建一个声音可视化系统。这可能看起来像在 Winamp 应用程序中。也许存在免费库或一些有趣的文章描述如何做到这一点?示例:alt text http://img44.imageshack.us/img44/9982/examplel.png…

    2024-06-12 03:17:21
    0 91 67
  • C语言的开发环境:创建C#Winform开发和生产环境

    关于C语言的开发环境的问题,在winform development中经常遇到,我想知道为我的 C # winforms 项目正确创建开发和生产环境的最佳方法是什么。不幸的是没有开发环境。相反,每次我希望创建 Production 或 Development 构建时,我必须指定发布路径。此外,由于每个 prod 或 dev 构建使用不同的连接字符串,因此我必须进入代码并进行更改。…

    2023-12-29 06:38:01
    0 16 21
  • C#winform项目:创建C#Winform开发和生产环境

    关于C#winform项目的问题,在winform development中经常遇到,我想知道为我的 C # winforms 项目正确创建开发和生产环境的最佳方法是什么。不幸的是没有开发环境。相反,每次我希望创建 Production 或 Development 构建时,我必须指定发布路径。此外,由于每个 prod 或 dev 构建使用不同的连接字符串,因此我必须进入代码并进行更改。…

    2024-05-15 00:50:09
    0 98 21
  • C语言数学计算:C#数学计算器(estimate calculator math)

    关于C语言数学计算的问题,在estimate calculator math中经常遇到,可能的重复项:Is there a string math evaluator in.NET?Converting string expression to Integer Value using C#Best and shortest way to evaluate mathematical expressionsc# evaluating string“3*(4+2)”yield int 18…

    2024-06-14 01:28:13
    0 65 15
  • 数组c语言:C语言中的字典数组#(define array c#)

    关于数组c语言的问题,在define array c#中经常遇到,我想使用这样的东西:…

    2024-04-21 10:22:31
    0 85 95
  • C#md5加密:加密和解密 md5(md5 decrypt php)

    关于C#md5加密的问题,在md5 decrypt php中经常遇到,我正在使用代码$enrypt=md5($pass)并将$encrypt插入数据库。我想找出一种解密它们的方法。我尝试使用解密软件,但它说哈希应该是 16 字节。有没有办法解密它或使其成为 16 字节的 md5 哈希?…

    2024-01-07 03:14:16
    0 40 51
  • Word添加底纹图案样式:c#InteropWord文档添加样式

    关于Word添加底纹图案样式的问题,在create new style in word中经常遇到,现在我正在为多个用户创建一个应用程序,如果他们有一个英文版本,我可以使用“Header 1”,但如果他们不这样做,风格是无法识别的。我想知道我应该做什么,我应该添加一个新的风格吗?我一直在研究这个,但我不知道如何。…

    2024-01-24 13:50:16
    0 28 34

发表评论

登录 后才能评论

评论列表(16条)