一、使用变量的一般原则

  1、变量初始化原则:

    通常在变量声明时初始化;

    在靠近变量第一次使用的位置初始化;

    在类的构造函数里初始化变量。

  2、作用域:

    使变量引用局部化,即把引用到变量的地方尽可能集中在一起;

    尽可能地缩短变量的存活时间;

    尽可能地使变量的用途单一化(比如,pageCount的取值可能代表打印纸张的数量,但是如果它等于-1的话,表示有错误发生。应避免使用这样的变量。);

    确保使用了所有已声明变量。

二、变量命名原则

  一个好记的名字通常都是问题,而不是解决方案。一个好名字通常表达的是What而不是How,如果一个名字反映了计算的某些方面而不是问题本身,那么它

反映的就是how而不是what,请避免使用这样的变量名。(举例表示,想要表示一条员工数据,employeeData就比inputRec好,后者强调的是输入这一计算过程;

再比如想要表示打印机状态,printerReady就比bitFlag更好,后者更具有计算机特征。)

很多程序都有表示计算结果的变量:总额、平均值等,如果你要使用Total、sum、max、min等词语来修饰名词时,请把限定词加到名字的最后。当然如果你使用

Num时,我们通常约定,num放在变量名的开始位置代表一个总数:numCustomers表示员工总数。

1、为特定类型的数据命名

  作为循环变量使用:如果这个变量需要在循环之外使用,那么就应该取一个比i、j、k更有意义的名字,尤其是在你使用了多个嵌套循环时。

  作为状态变量使用:通常来说,标记变量应该用枚举类型、布尔型、具名常量来赋值,同时,也应该同上值进行比较。

  作为临时变量使用:建议使用准确而且具有描述性的变量名。

  为布尔类型变量命名时:给布尔变量赋予隐含“真假”含义的名字,像done/success这样的名字,他们的状态要么是完成要么是没有完成;要么是成功要么是失败。

而像status或者sourceFile这样的变量就看不出这些含义。不建议在状态变量前面加上is,这会降低程序的可读性;同时也不建议使用否定的变量名,比如notFound、

notDone,这也会使得代码阅读变得困难。

  为枚举类型命名:使用枚举类型时,可以通过使用组前缀,如Color_、Month_来明确表示该类型的成员都属于同一组。通常使用大写表示枚举类型。

  为常量命名:应该根据常量所表示的含义,而不是该常量所具有的数值为该抽象事物命名。(比如FIVE是个很糟糕的名字,而NUMBER比FIVE好多了,因为如果FIVE等于6就显得很搞笑了。)

  2、关于C++中的一些非正式规则

  变量名和对象名以小写字母打头,类名和函数名以大写字母打头。全局变量加上g_前缀,而成员变量使用m_前缀。对于typedef和struct声明的类型名,全部使用大写,由于这可能会与预处理常量发生混淆,所以可以在这些类型前面加上t_的前缀表示类型。对于具名常量,C++中全部使用大写来表示,用下划线来分割单词。还有其他的一些命名规则:比如通常i、j、k表示整数下标;p是指针;除了全部大写的名字和特定的前缀,一般不使用下划线。

三、常见数据类型数据的使用

  1、关于指针的一些使用技巧

  在与指针分配相同的作用域中删除指针;在使用指针之前检查指针;先检查指针所引用的变量再使用它;如果你的代码里出现了p->q->r->s这样的语句,请考虑使用中间变量,增强代码的可读性;删除或者释放之前检查指针是否为空,删除或者释放指针之后,把它们设置为空值。

  C++中引入了指针和引用的概念,通常情况下,“按址传参”时我们使用指针,而“按值传参”时,我们使用引用(或是const引用)。C++11以来,引入了智能指针的,使用合适的智能指针也能减少指针错误的发生。

  2、关于全局数据的一些使用技巧

  只有万不得已时才使用全局数据,所以在使用全局数据时,要区分全局变量和类变量,相同条件下,优先使用类成员变量。当然也可以是使用访问器子程序来取代全局数据。在万不得已,必须使用全局数据时,可以通过以下3点,降低使用全局数据的风险:

  创建一种命名规则来突出全局变量;

为全局变量创建一份注释良好的清单;

  不用使用全局变量来存放中间结果;

最后一点,不要为了不使用全局变量而不使用全局变量。

四、非常见数据类型数据的使用

  

Coding能力提升小技巧的更多相关文章

  1. Python性能提升小技巧

    第一部分 1-使用内建函数: 你可以用Python写出高效的代码,但很难击败内建函数. 经查证. 他们非常快速 2-使用 join() 连接字符串. 你可以使用 + 来连接字符串. 但由于string ...

  2. 10个提升MySQL性能的小技巧

    从工作量分析到索引的三条规则,这些专家见解肯定会让您的MySQL服务器尖叫. 在所有的关系数据库中,MySQL已经被证明了完全是一头野兽,只要通知停止运行就绝对不会让你多等一秒钟,使你的应用置于困境之 ...

  3. iOS Xcode 小技巧,提升理解查询能力,Command + 点击鼠标右键 Jump to Definition等

    前言: 介绍下Xcode 小技巧,以及一下快捷键,让你调试程序更加出类拔萃,安排! Command + 点击鼠标右键 Jump to Definition,可能你平时也在用,但是你明白全部的用法吗,试 ...

  4. 学会这些 pycharm 编程小技巧,编程效率提升 10 倍

    PyCharm 是一款非常强大的编写 python 代码的工具.掌握一些小技巧能成倍的提升写代码的效率,本篇介绍几个经常使用的小技巧. 一.分屏展示 当你想同时看到多个文件的时候: 1.右击标签页: ...

  5. YbSoftwareFactory 代码生成插件【二十一】:Web Api及MVC性能提升的几个小技巧

    最近在进行 YbSoftwareFactory 的流程功能升级,目前已经基本完成,现将用到的一些关于 Web Api 及 MVC 性能提升的一些小技巧进行了总结,这些技巧在使用.配置上也相当的简单,但 ...

  6. python debug小技巧&&工程能力的几点建议

    Debug小技巧: 转载请声明本文的引用出处:仰望大牛的小清新 1.初次编程时,在每一个if后面都写上else,这样,如果你的else原本是不应该运行的,那么就可以在else中输出此时的状态信息便于排 ...

  7. 开发Android应用 提升性能的小技巧

    前 言 2015年,Android OS 目前在手机操作系统的市场占有率已达59%,权威机构预计,Android市场占有率在2016年将达到63%,由于Android的开放性,未来占有率还将不断增加, ...

  8. PHP开发小技巧,让你瞬间提升逼格

    说到PHP代码的优化,PHP开发的小技巧我想很多人都有自己的一套,下面分享一些小技巧,希望对大家有所帮助. 1.循环内部不要声明变量,尤其是对象这样的变量. 2.foreach效率更高,尽量用fore ...

  9. 9 个 Yoinkmac使用小技巧,提升你的 Mac 文档解决效率

    Yoinkmac是一个工具类应用程序,用于在苹果电脑上进行临时文档暂存,就像一个“中转站”将文件从一个窗口轻松移动到另一个窗口.类似的软件包括苹果电脑上的Dropshelf和Unclutter,但相比 ...

随机推荐

  1. Python模拟登陆TAPD

    因为在wiki中未找到需要的数据,查询也很迷,打算用python登录tapd抓取所需项目下的wiki数据,方便查找. 2018-9-30 19:12:44 几步走 模拟登录tapd 抓取wiki页左侧 ...

  2. Eclipse关于怎么调出web project

    myeclipse和eclipse两个软件不一样的点很多,当然玩的时候也会遇到找不到的选项 此片摘自: https://www.cnblogs.com/icebutterfly/p/7771936.h ...

  3. sql查询语句for xml path语法

    [原地址] for xml path作用:将多行的查询结果,根据某一些条件合并到一行. 例:现有一张表 执行下面语句 select Department, (SELECT Employee+',' F ...

  4. PHPMailer出现SMTP connect() failed.

    很可能是端口问题,最好把$mailer->SMTPSecure和$mailer->Port分别设置为ssl与465或者tls与587,否则某些浏览器不接受不安全的链接,导致$mailer- ...

  5. Java线程池ThreadPoolExecutor

    线程池的好处 1. 降低资源的消耗 通过重复利用已创建的线程降低线程创建和销毁所造成的消耗 2. 提高响应速度 当任务到达时,任务可以不需要等到线程创建就能立即执行 3. 提高线程的可管理型 线程是稀 ...

  6. 迭代器模块 itertools

    无限迭代器 itertools 包自带了三个可以无限迭代的迭代器.这意味着,当你使用他们时,你要知道你需要的到底是最终会停止的迭代器,还是需要无限地迭代下去. 这些无限迭代器在生成数字或者在长度未知的 ...

  7. weld

    weld - 必应词典 美[weld]英[weld] v.焊接:熔接:锻接:使紧密结合 n.焊接点:焊接处 网络焊缝

  8. [leetcode]100. Same Tree相同的树

    Given two binary trees, write a function to check if they are the same or not. Two binary trees are ...

  9. 认识正则RegExp;

    1.什么是正则??? 就是一条规则,用于检验字符串的格式,目标就是字符串. *只要是表单提交的数据都是字符串 2.正则的定义??? (1)var reg=new RegExp() (2)var reg ...

  10. android nostra13

    nostra13的ImageLoader可以让图片能在异步加载更加流畅,可以显示大量图片,在拖动ListView的时候不会出现卡的现象.可以实现ListView的图片加载.GridView的图片加载. ...