编程规范 —— 变量的命名

变量命名的最高原则:真实物理意义。

  • 形式最好要统一:img_idx ⇒ row_idx ⇒ col_idx
  • 不要太介意变量名称的长度,其长度如果能换来含义的清晰,还是值得的。
  • 变量的命名是一完整语句的简练版:
    • with_**,without_**
  • 常见简写
    • acc ⇒ access,accumulate
    • cur ⇒ current,
    • reps ==> 代表,cands ==> 候选(candidate,候选者)
  • 前缀与后缀:

    • pre-:pre- 开头的函数或者变量名,通常会在程序的核心流程之前发生、进行;

      • 比如事先的排序;

        void precalc(){
            sort(A, A+n);
        }

0. 简短而具有描述性

  • name 要好于 n
    • student_name 要好于 s_n
  • name_length 则要好于 length_of_a_student_name

1. 初始值的命名

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

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

比如求解

cos(x)x3=0 cos ⁡ ( x ) − x 3 = 0

或者简单的代数分析, 1cos(x)11x311x1 − 1 ≤ cos ⁡ ( x ) ≤ 1 ⇒ − 1 ≤ x 3 ≤ 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:
  • sumP = sum(P);
  • logU = log(U);

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. 时态

完成时,表已经执行过的操作;进行时,则表示正在执行。

  • visited:显然表示已被访问过的;
  • isWriting:
  • 函数一般执行的是一系列的动作,因此以动宾短语作为函数名,

    void visit(const BTree& bt);
  • 而变量一般则为名词,visited
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值