编程教程中的英文示例改成中文命名看看?想不到原来是这意思!

注意:文中所有中文命名的示例代码都能正常运行,因为 Java、Scala 等等编程语言都支持中文命名标识符。

前几天有幸看到Quora不久前的一个回复: Has any serious project been written in a non-English-based programming language? (有没有非英文编程语言写的项目?)

得知西门子和爱立信内部都有使用母语命名的C/C++代码(德语/瑞典语). 原文如下:

At both Siemens (German) and Ericsson (Swedish), I have seen programs written in C, and C++ where the only English words are the keywords. So if, new, else, for and the standard libraries like std::vector<>

Everything else was in German or Swedish.

另外, 答者还提到在布拉格碰到过一本Java编程书, 也是用非英语进行命名写的示例代码.

以母语命名可读性强的优势, 照理说编程教程应该是非常适合这一实践的. 那么来试试:

500

观感如何? 个人觉得是非常一目了然, 但代码本身自带不少槽点,和生活现实相去甚远。

下面看看英文原版(Effective Java第三版, Item 34的例程):

500

意思一样, 但是不是看上去有了些"距离感", 槽点似乎就没那么明显了, 尤其不会有太多代入感. 可以想见, 在翻译英文原著时, 译者对代码本身的命名进行中文化也许会吃力却讨不到多少好. 

翻了也许会有其他麻烦的还有这种(同一本书, Item 68):

500

还有这种(Item 4):

String s = "bikini";

至于下面这个例子(Item 34), 问题是想翻译都只能找到音译词, 也许还不如不翻. 而且, 在示例代码里用"桔子", "苹果"之类在外文编程书籍中屡见不鲜, 但如果真用在中文代码中, 似乎第一感觉就有点幼稚.

public enum Apple { FUJI, PIPPIN, GRANNY_SMITH }

public enum Orange { NAVEL, TEMPLE, BLOOD }

还有一种问题比如(Programming in Scala 第三版, 7.5节):

500

直译过来是:

500

这几个词对于不大了解西方饮食习惯的读者来说, 读起来完全没有感觉. 与其费口舌在注解里普及西方文化, 也许改成这样更自然:

500

但这比起翻译本身来, 又多了不少工作量, 估计还很难获得原作者的同意. 当然, 如果是自编文献, 就没有原作的限制了, 但就像之前的例子所示, 恐怕选材和尺度都会比用英文代码更加敏感.

类似的, 在项目中使用中文命名也比英文命名更需要推敲. 随手写个奇怪的英文名看起来也许不那么显眼, 但用了中文, 就会非常扎眼. 所谓"文如其人", 也许语文的实用性会随着中文编程的推广而逐渐回归.

站务

全部专栏