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,但相比 ...
随机推荐
- Python模拟登陆TAPD
因为在wiki中未找到需要的数据,查询也很迷,打算用python登录tapd抓取所需项目下的wiki数据,方便查找. 2018-9-30 19:12:44 几步走 模拟登录tapd 抓取wiki页左侧 ...
- Eclipse关于怎么调出web project
myeclipse和eclipse两个软件不一样的点很多,当然玩的时候也会遇到找不到的选项 此片摘自: https://www.cnblogs.com/icebutterfly/p/7771936.h ...
- sql查询语句for xml path语法
[原地址] for xml path作用:将多行的查询结果,根据某一些条件合并到一行. 例:现有一张表 执行下面语句 select Department, (SELECT Employee+',' F ...
- PHPMailer出现SMTP connect() failed.
很可能是端口问题,最好把$mailer->SMTPSecure和$mailer->Port分别设置为ssl与465或者tls与587,否则某些浏览器不接受不安全的链接,导致$mailer- ...
- Java线程池ThreadPoolExecutor
线程池的好处 1. 降低资源的消耗 通过重复利用已创建的线程降低线程创建和销毁所造成的消耗 2. 提高响应速度 当任务到达时,任务可以不需要等到线程创建就能立即执行 3. 提高线程的可管理型 线程是稀 ...
- 迭代器模块 itertools
无限迭代器 itertools 包自带了三个可以无限迭代的迭代器.这意味着,当你使用他们时,你要知道你需要的到底是最终会停止的迭代器,还是需要无限地迭代下去. 这些无限迭代器在生成数字或者在长度未知的 ...
- weld
weld - 必应词典 美[weld]英[weld] v.焊接:熔接:锻接:使紧密结合 n.焊接点:焊接处 网络焊缝
- [leetcode]100. Same Tree相同的树
Given two binary trees, write a function to check if they are the same or not. Two binary trees are ...
- 认识正则RegExp;
1.什么是正则??? 就是一条规则,用于检验字符串的格式,目标就是字符串. *只要是表单提交的数据都是字符串 2.正则的定义??? (1)var reg=new RegExp() (2)var reg ...
- android nostra13
nostra13的ImageLoader可以让图片能在异步加载更加流畅,可以显示大量图片,在拖动ListView的时候不会出现卡的现象.可以实现ListView的图片加载.GridView的图片加载. ...