Skip to content

Latest commit

 

History

History
121 lines (111 loc) · 2.45 KB

code_standard.md

File metadata and controls

121 lines (111 loc) · 2.45 KB

Code Standard

DeepVAC项目中的代码规范。使用的是C++举例,Java、Python等其它语言也同样遵守。

代码理念

代码理念和Python之禅一致,如下所示:

>>> import this
The Zen of DeepVAC, by Gemfield

1.漂亮胜于一切2.可读性很重要3.变量名即注释4.明了胜于晦涩5.简洁胜于复杂6.复杂胜于凌乱7.扁平胜于嵌套8.超过三层嵌套应坐立不安9.尽量复用代码10.应为没有模块化而寝食难安11.多行短代码胜于一行长代码12.不容易实现的想法就不是好想法13.不容易解释的实现就不是好实现14.容易解释的代码才可能是好代码15.善用容器和巧妙算法来重构冗长逻辑16.命名空间是个绝妙的设计17.条件分支尽量重构为表驱动18.写if前要三思而后行19.善用列表推导式20.不要以特殊理由逃避上述规则

当在实践中遇到冲突的理念时,必须:

  • 首先确保代码漂亮;
  • 其次确保代码简洁;
  • 其次确保代码扁平;
  • 其次确保代码明了;
  • 其次确保代码可读性;
  • 其次确保短代码;
  • 其次确保代码可解释;
  • 其次确保代码巧妙;
  • 以上无一确保时,确保离职手续已办妥。

代码规范

  • file name (文件名)
syszux_msg.h
syszux.h
syszux_msg.cpp
  • variable name (变量名)
int gemfield;
int gemfield_flag;
//global
int g_gemfield_flag;
//const
const int kGemfieldFlag;
  • class name (类名)
class Syszux;
class SyszuxMsg;
  • class data member name (类的数据成员)
int gemfield_;
int syszux_msg_;
  • function name (函数名)
void get();
void getGemfieldConfig();
  • namespace name (命名空间)
namespace gemfield;
namespace gemfield_log;
  • ENUM & MACRO (枚举&宏)
//enum
enum GEMFIELD;
//macro
define GEMFIELD gemfield;
define GEM_FIELD 7030;
  • flow control(流控制)
//if
if(true){
    int gemfield = 719;
}

//for
for(...){
    int gemfield = 719;
}

//switch
switch( level ){
    case gemfield::None:	
        resip::Log::setLevel( resip::Log::None );
        break;
    default:
        resip::Log::setLevel( resip::Log::None);
        break;
}

python的import顺序

按照如下优先级顺序来import模块:

  • import标准库
  • import三方库
  • import cv系列
  • import torch系列
  • import torchvision系列
  • import deepvac系列
  • import 本项目