Coding能力提升小技巧
一、使用变量的一般原则
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能力提升小技巧的更多相关文章
- Python性能提升小技巧
第一部分 1-使用内建函数: 你可以用Python写出高效的代码,但很难击败内建函数. 经查证. 他们非常快速 2-使用 join() 连接字符串. 你可以使用 + 来连接字符串. 但由于string ...
- 10个提升MySQL性能的小技巧
从工作量分析到索引的三条规则,这些专家见解肯定会让您的MySQL服务器尖叫. 在所有的关系数据库中,MySQL已经被证明了完全是一头野兽,只要通知停止运行就绝对不会让你多等一秒钟,使你的应用置于困境之 ...
- iOS Xcode 小技巧,提升理解查询能力,Command + 点击鼠标右键 Jump to Definition等
前言: 介绍下Xcode 小技巧,以及一下快捷键,让你调试程序更加出类拔萃,安排! Command + 点击鼠标右键 Jump to Definition,可能你平时也在用,但是你明白全部的用法吗,试 ...
- 学会这些 pycharm 编程小技巧,编程效率提升 10 倍
PyCharm 是一款非常强大的编写 python 代码的工具.掌握一些小技巧能成倍的提升写代码的效率,本篇介绍几个经常使用的小技巧. 一.分屏展示 当你想同时看到多个文件的时候: 1.右击标签页: ...
- YbSoftwareFactory 代码生成插件【二十一】:Web Api及MVC性能提升的几个小技巧
最近在进行 YbSoftwareFactory 的流程功能升级,目前已经基本完成,现将用到的一些关于 Web Api 及 MVC 性能提升的一些小技巧进行了总结,这些技巧在使用.配置上也相当的简单,但 ...
- python debug小技巧&&工程能力的几点建议
Debug小技巧: 转载请声明本文的引用出处:仰望大牛的小清新 1.初次编程时,在每一个if后面都写上else,这样,如果你的else原本是不应该运行的,那么就可以在else中输出此时的状态信息便于排 ...
- 开发Android应用 提升性能的小技巧
前 言 2015年,Android OS 目前在手机操作系统的市场占有率已达59%,权威机构预计,Android市场占有率在2016年将达到63%,由于Android的开放性,未来占有率还将不断增加, ...
- PHP开发小技巧,让你瞬间提升逼格
说到PHP代码的优化,PHP开发的小技巧我想很多人都有自己的一套,下面分享一些小技巧,希望对大家有所帮助. 1.循环内部不要声明变量,尤其是对象这样的变量. 2.foreach效率更高,尽量用fore ...
- 9 个 Yoinkmac使用小技巧,提升你的 Mac 文档解决效率
Yoinkmac是一个工具类应用程序,用于在苹果电脑上进行临时文档暂存,就像一个“中转站”将文件从一个窗口轻松移动到另一个窗口.类似的软件包括苹果电脑上的Dropshelf和Unclutter,但相比 ...
随机推荐
- 《深入浅出 Java Concurrency》目录
最近在学习J.U.C,看到一个大神 关于这个系列写的非常精辟,由于想做笔记,故系列转载并记录之. 原文:http://www.blogjava.net/xylz/archive/2010/07/08/ ...
- MaC 修改MySQL密码
1.苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop mysql server) 2.进入终端输入:cd /usr/local/mysql/bin ...
- json初接触
<html lang="en"> <head> <meta charset="UTF-8"> <meta name=& ...
- 早期自学jQuery-一入门
本节目录: ----------①安装使用 ----------②语法 ----------③文档就绪函数 ----------④选择器 一.安装使用(特别注意jQuery应当位于<head&g ...
- java书籍
1.«java高并发编程详解 »一本比较详细介绍多线程的书籍,个人感觉比 并发编程思想 这本书详细
- mybatis泛型(一)
mybatis的确很方便,可以随意配置sql语句,并根据参数生成指定的sql,也可以根据查询结果生成指定对象 但是有一点非常恐怖,就是每个数据库表都必须有一个配置,等于在一个系统里做了很多重复的工作, ...
- linux 强制删除yum安装的php7.2
由于支付宝SDK只支持php7.1,因为需要删除之前安装的7.2版,进行降级.通过yum remove不能完全删除php,必须通过rpm方式卸载.由于php安装模块间有依赖,因此需要按顺序进行卸载.如 ...
- 恢复mysql 中root 用户的所有权限
今天在研究数据库的时候不小心吧root用户的权限全给关了.这就尴尬了. 找了半天的解决方案. 如果你的用grant all 无法设定某个用户的权限可以试试这个方法. 1停止mysql服务器.使用ski ...
- azkaban 配置邮件
1.配置邮件请在azkaban-web-server中进行配置:如下图: /opt/azkaban/azkaban/azkaban-web-server/build/install/azka ...
- win server 2012 服务器不能ping通
以windows server 2012作为服务器,服务器能够ping通局域网中的客户端A,但A不能ping通服务器. 解决办法: 确定服务器中系统->远程设置->远程桌面选项下为允许选项 ...