回首页 回首页 ◎ 设为首页  
◎ 收藏本站  
◎ 给我留言  
  
  首 页  C/C++教程  C++之父的FAQ  C/C++动向  C/C++源代码  C/C++误区  Unix/Linux  下载中心  乱七八糟  蚂蚁的Blog  
  当前位置:首 页 >> C++之父的FAQ >> C++ 风格与技术 FAQ >> [翻译] 你如何命名变量?是否推荐匈牙利命名法?
最 近 更 新
[转] 我该把const写在类..
[翻译] 我应该使用按值..
[翻译] 你如何命名变量..
[转] 何种代码布局风格..
[转] “int* p;”和“in..
[翻译] “cout”怎么念?
[转] 宏有什么不好吗?推荐
[翻译] static_cast 有..推荐
[翻译]为何C++里有些东..推荐
[翻译] i++ + i++ 的值..推荐
最 新 推 荐
[转] 宏有什么不好吗?推荐
[翻译] static_cast 有..推荐
[翻译]为何C++里有些东..推荐
[翻译] i++ + i++ 的值..推荐
[翻译] 数组有何不好之..推荐
[转] 为何delete操作不..推荐
[转] 有placement delet..推荐
[翻译] “new”和“mall..推荐
[转] C和C++风格的内存..推荐
[翻译] 为何标准容器效..推荐
热 门 排 行
[转] 我可以写“void ma..
[翻译] 什么是纯虚函数?
[转] 这个简单的程序…..推荐
[转] 我如何从标准输入..
[翻译] i++ + i++ 的值..推荐
[转] 我该把const写在类..
[转] 我怎样才能把整数..
[转] 我应该怎样处理内..推荐
[转] 宏有什么不好吗?推荐
[翻译] static_cast 有..推荐
站 内 搜 索

Web stdcpp.cn
关键词

搜索方式

搜索范围

精确匹配
广 告

[翻译] 你如何命名变量?是否推荐匈牙利命名法?


来源:蚂蚁的 C/C++ 标准编程 作者:Bjarne Stroustrup 翻译:antigloss 等级:精品
发布于2007-09-23 13:35 被读736次 【字体:

    不,我并不推荐“匈牙利命名法”。我认为“匈牙利命名法”(在变量名中嵌入类型的缩写)是一种对隐式类型语言来说行之有效的技巧,但对支持泛型编程和面向对象编程(这两种编程范型都是基于类型和参数来选择合适的操作)的语言来说,它却是完全不合适的。在这种情况下,“把对象的类型用作名字的一部分”不仅复杂化了抽象,更限制了抽象的程度。在不同程度上,我对各种将语言技术细节信息(例如:作用域、存储类型、语法类别)嵌入(变量)名字的方案都持有保留态度。我同意在某些情况下,将类型提示嵌入变量名会很有帮助,但大多数情况下,特别是随着软件的发展,这会导致维护危机,甚至会严重损害优秀的代码。像躲避瘟疫一般地远离它吧。

    因此,我不喜欢根据类型命名变量;我喜欢并推荐什么?根据功能命名变量(函数、类型等等)。选择有意义的名字;亦即,选择有利于别人读懂你的程序的名字。甚至你自己往往也会难以理解你的程序到底是要干嘛用的,如果你在程序中胡乱使用“易于拼写”的名字,例如 x1、x2、s3、p7 等等。缩写词和首字母缩写词很容易混淆视听,所以应该“省点儿”用这种词。首字母缩写词更是应该尽可能地避免。比如 mtbf、TLA、myw、RTFM、NBV 等等。此时此刻,它们的含义可能显而易见。但几个月过后,任谁也不敢担保一定不会忘掉其中任何一个(的含义)。

    短小的名字,例如 x 和 i,如果按传统习惯来用的话,是有意义的;亦即,x 只被用作局部变量或者参数,而 i 用作循环计数器。

    不要使用过长的名字;它们难以拼写,并使代码行变得很长,以致不能完全显示于屏幕上,而且也不易于阅读。下面这些变量名看起来不错:

        partial_sum    element_count    staple_partition

    这两个就太长了点:

        the_number_of_elements    remaining_free_slots_in_symbol_table

    我更喜欢使用下划线来分隔标识符(例如 element_count)里的单词,而非替换使用大小写,例如 elementCount 和 ElementCount。名字里的字母绝对不要全部都用大写(例如 BEGIN_TRANSACTION),因为全部大写习惯上是用于命名宏的。即使你不用宏,但其他人也许会在他们的头文件中引用你的头文件。命名类型时,最好大写首字母(例如 Square 和 Graph)。C++ 语言和标准库都不使用大写字母,因此 int 非 Int,string 非 String。这样,你就能很容易地辨认出哪些是标准类型,哪些是你定义的类型。

    避免使用易于拼错、看错或混淆的名字。例如:

        name    names    nameS
        foo     f00
        fl      f1       fI      fi

    字符 0、o、O、1、l 以及 I 特别容易引起问题。

    通常,命名习惯的选择仅受限于局部的风格规则。切记,保持风格的一致性常常比使用你认为最好的方式处理各种小细节更为重要。

原文地址http://www.research.att.com/~bs/bs_faq2.html#Hungarian

本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 Bjarne Stroustrup 翻译:antigloss 共同所有,转载请注明原作者和出处。谢谢。



相关专题:C++ 之父的言论
[转] 我该把const写在类型前面还是后面?
[翻译] 我应该使用按值传递还是按引用传递?

上一篇:[转] 何种代码布局风格为佳?
下一篇:[翻译] 我应该使用按值传递还是按引用传递?

共有评论 1 条 网友评分 4分 查看全部评论

游客:Tesiro
评分:5
好,unix命名法,我也用,不过现在用的人越来越少了,在windows编程的世界里,许多的程序员都盲目的跟随macrosoft在使用它所倡导的匈牙利命名法。

查看全部评论

【发表评论】 评分:1分 2分 3分 4分 5分


验证码:

Powered By Www.Xydw.COM Ver1.14 管理
Copyright © 2005-2006 蚂蚁的 C/C++ 标准编程 All Right Reserved. XCMS
粤ICP备06014124号   站长:Antigloss