最近, 有一本很赞的.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. 更改用户host留下的坑

    前言:  我们在创建数据库用户的时候都会指定host,即一个完整的用户可描述为 'username'@'host' .创建用户时不显式指定host则默认为%,%代表所有ip段都可以使用这个用户,我们也 ...

  2. notepad++ 设置运行python脚本

    按F5 在输入框中输入: cmd /k python “$(FULL_CURRENT_PATH)” &PAUSE & EXIT python路径必须在环境变量中. 否则需要输入完整的p ...

  3. ubuntu 16.04 创建NFS

    快速设置 安装NFS服务 sudo apt-get install nfs-kernel-server 编辑/etc/exports文件 vim /etc/exports /opt/nfs *(rw, ...

  4. shell 脚本中 while 只执行一次

    实例代码 while read line ; do ssh -p20002 $line -o StrictHostKeyChecking=no xxxxxxxxx done < ip.txt w ...

  5. selenium中三大窗口切换

    我们在做UI自动化时,不得不会遇到一些窗口跳转与弹框,在这种的时候如果不进行切换的话,继续执行脚本必然会报错,所以我们就需要用到切换窗口的方法. selenium中主要是三种窗口 Windows窗口 ...

  6. luoguP5495:Dirichlet 前缀和

    题意:给定数组a[]的生成方式,然后b[i]=∑a[j]  ,(i%j==0),求所有b[i]的异或和.所有运算%2^32; 思路:高维前缀和的思想,先筛出所有素数,然后把每个素数当成一维,那么分开考 ...

  7. Linux——查找占用磁盘体积最大的前10个文件

    前言 服务器上传文件失败了,才开始没考虑到磁盘原因还以为是自己的scrt的问题,还好df -h看了下,最后发现磁盘满了,真是.... 查找 find / -type f -print0 | xargs ...

  8. [NOI2009][codevs1846]KCOJ0191]植物大战僵尸

    题目描述 Description Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombi ...

  9. java读取HDFS压缩文件乱码

    java通过调用HDFS系统的FileSystem等API 直接读取HDFS的压缩文件会产生乱码 解决方法: 1.调用解码的API,解码后通过IO流处理. public static void mai ...

  10. php+ajax无刷新分页原生ajax实现分页最简单完整实例-完整代码,

    展示页面:index.html <html><script> function ajax_show() { // 获取当前页 var page =1; var xhr = ne ...