命名习惯

写程序经常需要命名,好的名字至少可以带来更清晰的代码,进一点还可以带来更好的设计和架构。

但看过很多程序,发现很多命名都不是很合适。


下面是我总结的一些命名原则:

    1. 提取公共部分, 减少不必要的重复(no repeate)。

        一堆函数名如果有相同的部分,可以使用 namespace 来封装,如果它们逻辑还有耦合,可以放到一个类中。
        一堆文件名如果有相同部分,建议把相同部分提取为文件夹名,这样文件名可以简短直接。
    

    2. 把最重要的信息放到 名字的前面 ( first is  importance)

   比如 create_singer_allalbums.cpp

   create 是最没用的信息,但这个目录下很多都有,可以把 create提取成一个目录。
   albums是最重要的信息,应该放到最前。all_alblums_of_singer, 如果去除all不会引起文件冲突,改成 albums_of_singer.cpp 更简洁。


下面是对第二原则的推广

 

    3. 不要使用匈牙利命名法 ( badly  type prefix)

       匈牙利命名法,是用来弥补早期编译器没有函数原型检查的缺陷。 现在的编译对类型不匹配都会给出错误或警告,你只要关注makefile的提示信息就可以了。
       高级的IDE都支持类型信息提示, EditPlus和notepad++这些除外。

       如果非要使用 匈牙利命名法,也建议你把前缀改成后缀形式, 比如 vecSongs 改成 songs_vec, 这样读代码的人受到的干扰少很多。

    4. 不要使用前缀,使用后缀(badly scope prefix)

    还有很多喜欢命名 类变量为 m_songs, 或 _songs,  这里 m_ 前缀表示 member_var是类的实例变量。

    但每次读到这个的都不爽,如果改成 songs_ 这样的方式, 我就可以关心 songs , 判断是否是实例变量的时候,再去看后缀。

    _songs 这种 方式不好地方在于, _ 和 _ _ 前缀被好多系统变量占用了。

   g_songs 的方式定义全局变量是合适的,因为全局变量是丑陋的,让这个丑陋的设计更显眼,也更有利于后期改进(类似于 const_cast, static_cast)

 

 

 

 

 

转载于:https://www.cnblogs.com/napoleon_liu/archive/2010/10/20/1856552.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OS学习笔记】九 实模式:从汇编的角度理解栈结构

上一篇文章以一种更加高效的方法编写了主引导扇区的代码。主要是引入了循环和跳转指令。点击链接查看上一篇文章:编写主引导扇区代码-另一种更高效的写法 本篇文章,继续上一篇文章的学习。同样还是编写汇编代码加载到主引导扇区让CPU直接执行。但是我们…

链接库注意事项

1、确定include路径设置正确。 2、确定lib路径设置正确。 3、确定在连接器上加入需要连接的库名字。 4、由于库可能是Win平台(lib/dll)或者是Linux平台(a/so),使用编译器时需注意库的格式是否与编译器所在平台对应。 5…

【OS学习笔记】十 实模式:实现一个程序加载器-程序加载器如何将用户程序加载到内存并执行

上一篇文章学习了以下内容: 用一种不同的分段方法,从另一个不同的的角度理解处理器的分段内存访问机制使用循环和条件转移指令来优化主引导扇区代码 点击链接查看上一篇文章:点击链接查看 对于主引导扇区部分。大概前几篇文章已经学的差不…

ASP.NET生成WORD文档服务器部署注意事项

1、Asp.net 2.0在配置Microsoft Excel、Microsoft Word应用程序权限时 error: 80070005 和8000401a 的解决总 2007-11-01 11:30 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。 控制面板&#…

【OS学习笔记】十一 实模式:中断-软中断和硬中断基本原理

上一篇文章我们模拟操作系统的加载器程序,使用汇编语言实现了一个程序加载器:点击链接查看上一篇文章:程序加载器的实现原理 本篇文章,是实模式学习的结尾。在经过了那么多坎坷,终于学完了8086的实模式!&a…

配置节处理程序时出错,未能加载文件或程序集

安装sql server2008时,出现下面的错误: 按照上面的提示,查看那个路径下的文件,根据文件名判断可能是临时文件,于是首先将上面的文件剪切出来,然后安装,成功。 转载于:https://www.cnblogs.com/x…

【数据结构与算法-java实现】二 复杂度分析(下):最好、最坏、平均、均摊时间复杂度的概念

上一篇文章学习了:如何分析、统计算法的执行效率和资源消耗? 点击链接查看上一篇文章:复杂度分析上 今天的文章学习以下内容: 最好情况时间复杂度最坏情况时间复杂度平均情况时间复杂度均摊时间复杂度 1、最好与最坏情况时间复…

【软件开发底层知识修炼】六 Binutils辅助工具之- addr2line与strip工具

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 上一篇文章我们学习了gcc编译器的相关内容。点击查看上一篇文章:gcc编译器。本篇文章接着上一篇文章,学习GNU为GCC提供的辅助开…

Eboot 中给nandflash分区实现

提到分区就不得不提到MBR,不得不提到分区表。 什么是MBR 硬盘的0柱面、0磁头、1扇区称为主引导扇区,NANDFLASH由BLOCK和Sector组成,所以NANDFLASH的第0 BLOCK,第1 Sector为主引导扇区,FDISK程序写到该扇区的内容称为主…

kmp匹配算法

kmp匹配算法1.第一种方式是暴利匹配方式2.第二种方式采用kmp 方式进行匹配3. 相应的代码1.第一种方式是暴利匹配方式 暴利匹配规则 模型: str1 位源字符串下标为i,str2位匹配字符串,下标为j 。 假设 str1 匹配到i , str2 匹配到j 则有 (1)当 …

四维空间和五维空间N维空间遐想

四维空间和五维空间遐想1. 二维空间2. 三维空间3.四维空间5.五维空间就类一个球体1. 二维空间 二维空间是,一个平面 例如 x轴y轴; 2. 三维空间 三维空间是,是一个立体,可以简单理解为 x轴,y轴, z轴 易可理解…

【软件开发底层知识修炼】七 Binutils辅助工具之- ar工具与nm工具

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 上一篇文章学习addr2line与strip工具。点击链接查看上一篇文章:点击查看 本篇文章学习两个工具:ar与nm工具。 文章目录1、ar工…

【软件开发底层知识修炼】八 Binutils辅助工具之- objdump工具 与 size,strings工具

上一篇文章学习了ar工具与nm工具,点击链接查看上一篇文章:点击链接 本片文章学习记录以下三个工具: objdumpsizestrings 1、objdump工具 用法: 反汇编目标文件,查看汇编到源码的映射(后面代码案例分析看具体区别&a…

兼容门:先卸载腾讯QQ,再卸载360软件!

腾讯,360: 你们好,鉴于目前低级趣味的中国互联网兼容门事件愈演愈烈,让我的电脑感到消化不良,非常的痛苦不安。 为了心爱的电脑的健康和安全着想,我刚刚作出了一个艰难的决定: 卸载腾讯QQ系列软…

【C++深度剖析教程39】实现C++数组类模板

上一篇文章在那个学习了多参数类模板与特化的分析:点击链接查看上一篇文章:类模板深度剖析 本篇文章学习记录: 数值型模板参数实现C数组类模板 1、模板中的数值型参数 模板参数可以是数值型参数。也就是非类型参数。如下图所示&#xff1…

前端学习(168)全局事件属性

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/ TR/html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>事件</ti…

【原】两个时间相加的运算符重载实现

要求&#xff1a;两个时间相加&#xff0c;得到的时间形如“xx时&#xff1a;xx分&#xff1a;xx秒” -------------------------------------------------------------------------------------------------------------- 解答&#xff1a; 首先编写时间处理类 时间类 1 ///&l…

IOT变现

IOT&#xff08;物联网&#xff09;变现1. IOT 设备基础结构2.IOT 组成元素3.从M2M扩展到IOT的世界4. 工业4.0最近在看IOT变现&#xff0c;记录一下核心的知识点概念&#xff1a;IOT 是利用无线标签&#xff0c;传感器&#xff0c;MEMS(micro-ElectroMechanical System&#xf…

【C++深度剖析教程40】使用数值型模板技术计算1+2+3+...+N的值

上一篇文章学习了数值型模板技术&#xff0c;并利用相关技术&#xff0c;实现了C的数组类模板。点击文章查看上一篇文章&#xff1a;点击链接查看 本篇文章&#xff0c;继续利用模板技术来解决一个问题。 如果想求123…N的结果&#xff0c;有很多种方法。可以循环遍历&#x…

前端学习(169):无语义元素

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>无语义标签&…