最近, 有一本很赞的.NET技术书中文版出版了 - <More Effective C#: 改善C#代码的50个有效方法>. 
 
从广州\西安\长沙\上海等各地.NET俱乐部都收到反馈, 说这本书是用google翻译出来的.
 
然而, 事实上不是这样的.
 
首先, 我不是这本书的译者, 我也不认识这本书的译者, 我只是出于对.NET社区和技术的热爱来写这篇文章, 来澄清和化解误会而已.  同时如果该书译者看到我这篇文章, 也请联系我. 谢谢.
 
先举一个例子:
该书第38页, 第一段第一句: 
关于高阶函数一词, 有人认为作者是用谷歌翻译的, 因为高阶函数是数学名词.
 
然而事实是这样的,  在这里, 翻译成”高阶函数"没有任何问题, 因为:
  1. “高阶函数”首先是一个数学名词, 但是被函数式风格编程沿用了. 因为科学计算领域是函数式风格编程擅长领域之一. 所以函数式风格编程也沿用了很多数学名词.
  2. 而这里的TakeWhile()和LINQ是函数式风格的应用, 所以在这里使用”高阶函数”这个函数式风格名词完全没有问题.
 
类似的地方还会有:
  1. 这个词最坑, 因为这个词总共才三个字, 前面的”柯里”两个字是音译, 后面的”化”字是意译! 翻译不怕全音译, 不怕全意译, 就怕这种一半是音译一半是意译的! 
    这个词是函数式编程风格约定俗成的翻译. 其中”柯里”是逻辑学家Haskell Curry的名字音译.
    而.NET从十年前开始就支持函数式编程风格了. 其中大家最熟悉的就是LINQ啦. 所以有函数式编程风格的词汇很正常.
  2. 局部施用
    这个词同样也是函数式编程风格约定俗成的翻译.
  3. “仿函数” / “函子"
    这个词同样也是函数式编程风格约定俗成的翻译.
 
欢迎大家继续提供反馈, 我将持续更新这篇文章. 也希望该书译者看到这篇文章后联系我, 因为这个工作本来应该是由你来做的, 现在的我只是友情帮忙而已(出于对.NET社区和技术的热爱).
 
2019年6月1日更新: 有读者反馈: 该书封底的作者简介里”荣获微软公Regional Director”这句话有错漏, 漏了”司”字, 应该为”荣获微软公司Regional Director”. 嗯, 我想这个的确是错漏.
 
额外说一句: 很多同学反映在C#中具体应用DDD有各种问题. (广州.NET俱乐部群里每天都有关于DDD的讨论)
我分析了一下, 有些问题产生的原因是: DDD是基于面向对象的, 而.NET从十年前就引入了很多函数式风格的特性, 比如LINQ等等. 这些都是面向过程而不是面向对象的! 它们和DDD连最基本的思想都不一致! 那当然会产生问题啦!
另外, 自从JAVA也开始引入LINQ等函数式风格特性后, JAVA也不可避免的存在同样和DDD冲突的问题. 所以这与语言无关, 纯粹是DDD这种基于面向对象的思想和函数式编程风格这种基于面向过程的思想之间的冲突.
 

<More Effective C#: 改善C#代码的50个有效方法>中文版翻译答疑的更多相关文章

  1. [改善Java代码]自由选择字符串拼接方法

    对一个字符串拼接有三种方法:加号,contact方法,StringBuffer或者StringBuilder的append方法,其中加号是最常用的.其他两种方式偶尔会出现在一些开源项目中,那么这三者有 ...

  2. [改善Java代码]用枚举实现工厂方法模式更简洁

    工厂方法模式(Factory Method Patter)是"创建对象的接口",让子类决定实例化哪一个类,并使一个类的实例化延迟到其子类.工厂方法模式在我们的开发工作中,经常会用到 ...

  3. [改善Java代码]推荐覆写toString方法

    建议49: 推荐覆写toString方法 为什么要覆写toString方法,这个问题很简单,因为Java提供的默认toString方法不友好,打印出来看不懂,不覆写不行,看这样一段代码: public ...

  4. [改善Java代码]覆写变长方法也循规蹈矩

    建议6:覆写变长方法也循规蹈矩 在Java中,子类覆写父类中的方法很常见,这样做既可以修正Bug也可以提供扩展的业务功能支持,同时还符合开闭原则(Open-Closed Principle),我们来看 ...

  5. Effective Python之编写高质量Python代码的59个有效方法

                                                         这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码 ...

  6. 改善EF代码的方法(下)

    本节,我们将介绍一些改善EF代码的方法,包括编译查询.存储模型视图以及冲突处理等内容. > CompiledQuery 提供对查询的编译和缓存以供重新使用.当相同的查询需要执行很多遍的时候,那么 ...

  7. 改善EF代码的方法(上)

    本节,我们将介绍一些改善EF代码的相关方法,如NoTracking,GetObjectByKey, Include等. > MergeOption.NoTracking 当我们只需要读取某些数据 ...

  8. 改善C#程序的50种方法

    为什么程序已经可以正常工作了,我们还要改变它们呢?答案就是我们可以让它们变得更好.我们常常会改变所使用的工具或者语言,因为新的工具或者语言更富生产力.如果固守旧有的习惯,我们将得不到期望的结果.对于C ...

  9. Entity Framework 学习高级篇1—改善EF代码的方法(上)

    本节,我们将介绍一些改善EF代码的相关方法,如NoTracking,GetObjectByKey, Include等. l         MergeOption.NoTracking 当我们只需要读 ...

随机推荐

  1. Fundebug录屏插件更新至0.4.0,修复BUG,优化性能

    摘要: 录屏功能更加强大,欢迎免费试用! 关于Fundebug录屏功能 Fundebug是专业的程序BUG监控服务,当线上应用出现BUG的时候,我们可以第一时间报警,帮助开发者及时发现BUG,提高De ...

  2. C# Net 去除图片白边

    代码根据别人的进行改写,效果更好 直接拷贝使用 名称空间: using System.Drawing; 代码: /// <summary> /// 裁剪图片(去掉百边) /// </ ...

  3. javascript之DOM(二Document对象)

    javascript通过Document类型来表示文档.在浏览器中document是HTMLDocument对象(继承自Document)的一个实例,表示整个html页面.而且在浏览器中documen ...

  4. 彻底理解webgl

    javascript很简单,核心点就一个: 一切皆对象. 简单又熟悉.呵呵 这么简单的一句话,理解后,你就掌握了js. 一切皆对象,函数也是对象,创建静态方法 fun.action, 创建实例:new ...

  5. VMware Xcode真机调试

    原因如下:VMware12默认使用usb3.0 ,先给苹果系统关机,然后打开虚拟机设置,更改usb控制器为USB2.0 就可以成功连接了. 问题提示:could not launch “name” p ...

  6. 201871010102-常龙龙《面向对象程序设计(java)》第二周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  7. mysql常用操作(测试必备)

    现在互联网的主流关系型数据库是mysql,掌握其基本的增.删.改.查是每一个测试人员必备的技能. sql语言分类 1.DDL语句(数据库定义语言): 数据库.表.视图.索引.存储过程,例如:CREAT ...

  8. USACO Superprime Rib

    洛谷 P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib 洛谷传送门 JDOJ 1673: Superprime Rib JDOJ传送门 题目描述 农民约翰的母牛总是产生最好 ...

  9. 全面分析:APP中的消息功能设计

    一.定义 APP的“消息”模块,是通过APP或手机这个客户端,围绕某个产品的功能进行交流.沟通的重要方式.这种沟通,一方是运营人员或商家,也可以是产品或系统本身,为方便说明笔者这里姑且统一简称为B端, ...

  10. Speech Enhancement via Deep Spectrum Image Translation Network

    文中提出了一种深度网络来解决单通道语音增强问题. 链接:https://arxiv.org/abs/1911.01902 简介 因为背景噪声和混响的存在,录音通常会被扭曲,会对后端的语音识别等技术产生 ...