zoukankan      html  css  js  c++  java
  • 【译】Object Dumper: 函数式程序设计编码中的强大工具 拓荒者

    Post in English:Object Dumper: An Invaluable Tool for Writing Code in the Functional Programming Style

     

      当用函数式程序设计的方式开发C#应用程序时,你经常需要把一个集合输出到控制台。Object dumper在这方面是一个强大的工具。本为中的例子只有很少开发者了解。

      功能的转换通常需要连续的变换:转换集合a=>集合b=>集合c=>最终的集合。这是我的Functional Programming Tutorial中话题的要点。

      当我准备开发这样一个转换时,我首先在大脑中完成了这样一个转换的模型。有时候(特别是编写临时的转换时)我不会在编码之前完整的设计出每一个转换。例如,当源集合特别麻烦时,我先将它转变为简单明了的数据,再将其转换进一个有用的格式,为随后的转换做准备。有时我将其转换为匿名类型,有时我马上就知道我要将其转换为命名的类型。无论我选择那种方式,在我写下一个转换之前验证上一个转换是否正确时,Object Dumper将会是一个很好的工具。

      捎带提一下:我写这些转换的时候通常不经常用调试器。我写一个转换,验证其结果,写下一个转换,再验证,以此类推……粗略估计,使用调试器并不总是方便的。不过我并不担心它,只用Object Dumper就好了。

      要用它,只需要在你的项目中加入ObjectDumper.cs。

      最简单的用法,你可以简单的的传入任何对象给ObjectDumper:

    var z = new
    {
        A = "1",
        B = "2"
    };
    
    ObjectDumper.Write(z);

      这段代码将产生以下输出:

    A=1     B=2

     

      通常你会有一个嵌套的集合:

    var z = new
    {
        Aaa = "Hello",
        Bbb = "There",
        Ccc = new[] { 1, 2, 3 }
    };
    
    ObjectDumper.Write(z);

      输出:

    Aaa=Hello       Bbb=There       Ccc=...

      

      这个时侯,查看到嵌套集合中的内容将会非常有用,因此你可以传递一个附加的参数给ObjectDumper ,来告诉它输出嵌套集合的第一层:

    var z = new
    {
        Aaa = "Hello",
        Bbb = "There",
        Ccc = new[] { 1, 2, 3 }
    };
    
    ObjectDumper.Write(z, 1);

      这段代码将产生以下输出:

    Aaa=Hello       Bbb=There       Ccc=...
      Ccc: 1
      Ccc: 2
      Ccc: 3
     

    你可以在随Visual Studio 2008一起安装的CSharpSamples.zip文件中找到Object Dumper。

    C:\Program Files\Microsoft Visual Studio 9.0\Samples\1033\CSharpSamples.zip

    因为我要做很多SharePoint和Hyper-V的开发,我的开发计算机上运行着64为的Windows Server 2008,因此就我来说,CSharpSamples.zip的位置是:

    C:\Program Files (x86)\Microsoft Visual Studio 9.0\Samples\1033\CSharpSamples.zip

     -----------------------原文完------------------------------

    【因水平有限,错误在所难免,欢迎批评指正!】

    除了原作者所说的方式,你还可以通过一下方式获得ObjectDumper:

    1.NuGet

    Install-Package ObjectDumper

    2.在CodePlex站点下载

    http://objectdumper.codeplex.com/

  • 相关阅读:
    资源放送丨《Oracle存储过程中的性能瓶颈点》PPT&视频
    警示:一个update语句引起大量gc等待和业务卡顿
    周末直播丨细致入微
    Java VS Python:哪个未来发展更好?
    【LeetCode】279.完全平方数(四种方法,不怕不会!开拓思维)
    事件驱动
    Android初级教程以动画的形式弹出窗体
    Android简易实战教程--第五话《开发一键锁屏应用》
    迎战大数据-Oracle篇
    Android初级教程获取手机位置信息GPS与动态获取最佳方式
  • 原文地址:https://www.cnblogs.com/youring2/p/2539019.html
Copyright © 2011-2022 走看看