您的位置:首页 > 编程语言

编程规范 —— 变量的命名

2016-02-15 20:29 429 查看
变量命名的最高原则:真实物理意义。

(1)形式最好要统一:img_idx ⇒ row_idx ⇒ col_idx

(2)不要太介意变量名称的长度,其长度如果能换来含义的清晰,还是值得的。

(3)变量的命名是一完整语句的简练版:

with_**,without_**

0. 简短而具有描述性

name 要好于 n

student_name 要好于 s_n

name_length 则要好于 length_of_a_student_name

1. 初始值的命名

如牛顿拉普生方法求解方程的根时对初始值的命名及赋值,

double guess;
// 猜测值,大概值


比如求解

cos(x)−x3=0

或者简单的代数分析,−1≤cos(x)≤1⇒−1≤x3≤1⇒−1≤x≤1,或者数形结合,简单的绘图,我们定义初始值为 0.5:

double guess = 0.5;
while (abs(f(guess)) > 1e-9)
guess -= f(guess)/f_prime(guess);


2. 变量的命名:实际意义

stride:表示步长,tol:total

num_**:表示什么什么的数目

**num:表示什么什么号

patch 表示块,batch 表示批, numPatches:patch 的数目

batchNumPatches:num patches per batch

所以 numPatches / batchNumPatches = batch 的数目;

duration:持续的时间,time:则表示时刻;

3. 变量的命名:动词

“unroll” :flatten and concatenate

make:

makebatches

acc:accumulate,累积

wait_time_acc:时间的累积

total_time_acc:

4. 变量的命名:形容词

dummy:adj. 虚拟的;假的,n. 傀儡;哑巴;仿制品

elems.append(None)  # add a dummy element


5. 各种**器,**机(er)

我们在书中看到各种**器,**机,并非什么高深的物理概念,而只是一段代码逻辑而已。

(1)converter:转换器

(2)mnist_loader:数据加载

6. 变量名称的理解

(1)unroll:展开

如典型的神经网络的参数,以二层为例,W1(s2*s1),W2(s1*s2),b1(s2),b2(s1),这四个参数 unroll 之后

theta = [W1(:); W2(:); b1; b2];


skip:表示跳过,或者忽视(ignore,discard)的个数,

7. 抽象还是具体?

函数的参数(当然指的是形参),起名,尽量抽象;

void mySort(vector<int>& array);


而在客户端,调用端,起名,要尽量具体,见名知义,

vector<int> input(n);
vector<int> mySorted = input;
vector<int> reference = input;


8. 见名知义(或根据操作定义)

sumP = sum(P);

logU = log(U);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: