最近, 有一本很赞的.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. java-log4j配置

    引入依赖: <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId ...

  2. 在知识爆炸的年代如何学习,避免成为PPT架构师

    计算机的发展大体遵循摩尔定律,IT要学的东西越来越多,感觉无从下手 然后发现许多人,专门喜欢说这些名词概念装高大上,脱离一线开发,技术跟风盲目崇拜新的骚东西,比如docker,k8s,微服务,open ...

  3. ThinkPHP3.2.3:使用模块映射隐藏后台真实访问地址(如:替换url里的admin字眼)

    例如:项目应用目录/Application下模块如下,默认后台模块为Admin 现在需要修改后台模块的访问地址,以防被别有用心的人很容易就猜到,然后各种乱搞... (在公共配置文件/Applicati ...

  4. 在eclipse中使用Maven分模块搭建SSM框架,创建jar、war、pom工程模块教学,项目的热部署,需要的可以留下邮箱,给大家发整理过的Maven笔记

    第一章:Maven概述 (1)Maven是一个项目构建工具,由apache提供,用Java开发的 (2)构建工具:Ant(蚂蚁),Maven(专家) (3)构建工具作用:帮助程序员进行项目的创建,目录 ...

  5. Mybatis 子查询

    在查询数据库时,需要以查询结果为查询条件进行关联查询. 在mybatis中通过association标签和collection标签实现子查询. 1. collection(集合)和associatio ...

  6. 关于Jackson中JsonNode的取值asText()和textValue()区别

    在 比较高版本的Jackson 中, 包名为 com.fasterxml.jackson String jsonText="{\"name\":\"张三\&qu ...

  7. hdu2126 类01背包(三维数组的二维空间优化)

    题目描述: 对于给出的n个物品,每个物品有一个价格p[i],你有m元钱,求最多能买的物品个数,以及有多少种不同的方案 题目分析: 类似01背包的题目,一般的01背包问题我们遇到的是求n个物品,有m的容 ...

  8. NOIP 2003 栈

    洛谷 P1044 栈 洛谷传送门 JDOJ 1291: [NOIP2003]栈 T3 JDOJ传送门 题目描述 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两 ...

  9. IConvertible接口

    IConvertible接口:定义特定的方法,这些方法将实现引用或值类型的值转换为具有等效值的公共语言运行库类型. 公共语言运行库类型包括: Boolean.SByte.Byte.Int16.UInt ...

  10. 2016 ACM/ICPC亚洲区沈阳站

    A B C D E F G H I J K L M O O O $\varnothing$ $\varnothing$   $\varnothing$ $\varnothing$ $\varnothi ...