编程命名规范 C++(Google)& Java(阿里)

C++

文件命名规则

文件名全部小写,可以含下划线或连字符,按项目约定命名,且尽量保证文件名明确。比如:

cmd_save_player_info_class.cc 

my_use_full_class.cc

定义类的文件名一般是成对出现,如:

foo_bar.h 

foo_bar.cc

若是类中含大量内联函数,我们还可使用-ini.h文件,使之文件内容更加清晰,于是又如:

url_table.h 

url_table.cc 

url-table-ini.h

类命名规则

类型命名每个单词首字母大写,不含下划线,以名词形式。比如:

MyPalyerManager

这对于所有类型命名一样,类结构体,枚举,类定义都是如此,比如:

MyExcitingEnum

变量命名规则

变量名一律小写,单词用下划线相连,例如:

int player_id; 

string table_name;

特殊的是类成员变量,后跟下划线区别普通变量,比如:

player_name_ 

player_id_

全局变量则以 g_ 开头,比如 :

g_system_time

当然结构体成员变量还是和普通变量一样,比如:

string name; 

int num_entries;

常量命名规则

k后面跟大写字母开头的单词,比如:

const int kDaysInAWeek=7;

const string kCompanyName=”Tecent”;

函数命名规则

常规函数每个单词首字母大写,使用命令式语气,比如:

OpenFile() 

CheckFileName()

而存取函数或短小的内联函数使用小写加下划线,且与访问变量相吻合,比如

set_num_errors()
class Player{ 

public: 

void set_player_id(const int player_id){return player_id_=player_id;} 

int get_player_id() const{return player-id_;} 

private: 

int palyer_id_; 

};

名字空间命名

命名空间全小写,并基于项目名称和目录结构,比如

google_awesome_project

枚举命名规则

枚举类名属于类型名,按类命名,枚举值全大写加下划线,比如:

ENUM_NAME 

宏变量命名规则

如果你一定要用到宏,全大写加下划线,比如:

define PI_ROUND 3.0

小结

  1. 选词原则:函数名、变量名、文件名都应该具有描述性,不要随意缩写
  2. 词性或语气类型变量名保持名词性,函数名称使用命令性语气
  3. 大小写与下划线:
    1. 宏、枚举值全大写加下划线
    2. 变量、文件、命名空间、存取函数全小写加下划线
    3. 变量中特别注意:
      • 类成员变量还要以下划线结尾
      • 全局变量g_开头

Java命名规范

包名的书写规范 (Package)

  • 具有识别度,使用公司名(个人名字)
  • 全小写
    如:
 com.fxy.dao

类名的书写规范(Class)

类的命名(首字母大写,其他小写)

如:

      StudentAnswer.java

当要区别接口类和实现类的时候,可以在类的后面加上“Impl”。

如:

  • 接口类:UserInterface.java
  • 接口实现类:UserInterfaceImpl.java

分层说明

  1. Dao层
    a、接口类:实体对象+Interface+Dao
    如:用户对象接口类:
   UserInterfaceDao

b、实现类:实体对象+Interface+Impl+Dao
如:用户对象实现类:

     UserInterfaceImplDao
  1. Service层
    a、接口类:模块+Interface+Service
    如:用户管理接口类:
UserMsgInterfaceServiec

b、实现类:模块+Interface+Impl+Service
如:用户管理实现类:

UserMsgInterfaceImplServiec
  1. Web层(action类)
    实现类:模块+操作+Action
    如:
用户模块User+删除操作Delete+Action = UserDeleteAction

变量名(参照java驼峰命名法,首字母以小写开头,每个单词首字母大写(第一个单词除外))

基本形式

变量命名采用基本结构为typeVariableName,使用3字符前缀来表示数据类型。
如:定义一个整形变量:intDocCount,其中int表明数据类型,后面为表意的英文名,每个单词首字母大写。
编程命名规范 C++(Google)& Java(阿里)_第1张图片

变量使用技巧:

  1. 在一段函数中不使用同一个变量表示前后意义不同的两个数值。

  2. 除非是在循环中,否则一般不推荐使用单个字母作为变量名,i、j、k等只作为小型循环的循环索引变量。

  3. 避免用Flag来命名状态变量

  4. 用Is来命名逻辑变量,如:blnFileIsFound。通过这种给布尔变量肯定形式的命名方式,使得其它开发人员能够更为清楚的理解布尔变量所代表的意义。

  5. 如果需要对变量名进行缩写时,一定要注意整个代码中缩写规则的一致性。例如,如果在代码的某些区域中使用intCnt,而在另一些区域中又使用intCount,就会给代码增加不必要的复杂性。建议变量名中尽量不要出现缩写。

静态变量

参照java驼峰命名法,采用全部大写的形式来书写,对于采用多词合成的变量采用“_”来连接各单词。如:

USER_LIST

方法的命名

  1. 一般原则:参照java驼峰命名法,首字母以小写开头,每个单词首字母大写(第一个单词除外)。

  2. 词性:方法表示一种行为,它代表一种动作,最好是一个动词或者动词词组或者第一个单词为一个动词。

  3. 属性方法:以get/set开头,其后跟字段名称,字段名称首字母大写。如:getUserName()

  4. 数据层方法(dao):只能以insert(插入),delete(删除),update(更新),select(查找),count(统计)开头,其他层方法避免以这个5个单词开头,以免造成误解。

  5. 服务层方法(service):根据方法的行为命名,只描述方法的意义,而不采用方法的目的命名。比如系统的添加新用户,用户可以前台注册,也可以管理员后台添加,方法会被重用,所以最好不要用使用register,采用add会更好写。避免使用与web层相关的方法。

  6. Web层(action、controller)方法:最好是贴近web的语言,如register,login,logout等方法。

注释的书写规范 (Javadoc)

Java除了可以采用我们常见的注释方式(//、/* */)之外,Java语言规范还定义了一种特殊的注释,也就是我们所说的Javadoc注释,以/*开头,而以/结束, Javadoc 注释可以被自动转为在线文档,省去了单独编写程序文档的麻烦。 推荐使用。

Javadoc注释主要涉及范围:类、属性、方法。

package org.ietf.jgss;
import java.net.InetAddress;
 
import java.util.Arrays;
 
/**
 * 该类的整体性描述。
 *
 * @author 作者
 * @version 1.0, 05/22/07
 * @since 1.0
 */
 
public class ChannelBinding {
 
/**
 * 对该变量的备注信息
 */
 
private InetAddress initiator;
 
/**
 * 对该变量的备注信息
 */
 
private InetAddress acceptor;
 
/**
 * 对该变量的备注信息
 */
 
    private  byte[] appData;
 
  
 
    /**
     * 对该类的构造函数的备注信息。
     *
     * @param initAddr 对参数的备注。
     * @param acceptAddr对参数的备注。
     * @param appData对参数的备注。
     */
 
    public ChannelBinding(InetAddress initAddr, InetAddress acceptAddr,
 
              byte[] appData) {
 
         initiator = initAddr;
 
         acceptor = acceptAddr;
 
         if (appData != null) {
 
              this.appData = new byte[appData.length];
 
              java.lang.System.arraycopy(appData, 0, this.appData, 0,
 
                   appData.length);
 
         }
 
    }
 
 
 
    /**
     * 对该类的具体一函数的备注信息
     *
     * @param obj 参数的备注信息
     * @return 返回值的备注信息
     */
 
    public boolean equals(Object obj) {
 
         if (this == obj)
 
              return true;
 
         if (! (obj instanceof ChannelBinding))
 
              return false;
 
         ChannelBinding cb = (ChannelBinding) obj;
 
         return Arrays.equals(appData, cb.appData);
 
    }
 
}

其他书写规范

Jsp页面名称的书写规范

  1. 全部采用小写的英文字符和”_ ”组成。

  2. 整体采用模块名+操作的形式。如:user_view.jsp

  3. Jsp页面尽可能与action的意思对应,如UserListAction 对应user_list.jsp

接口

使用驼峰式命名。除了用名词外,还可以用形容词命名(体现其功能特性)

方法

规定用动词命名,适合用驼峰式命名,但与类名的最大区别在于,首字母必须小写

变量

规定为名词,其他同“方法”命名方式一样。变量名非常关键,应含有具体意义且易于理解,一般不允许使用单个字母 做变量名。除非一些临时性变量,像在循环中使用到的计数器等。在使用单个字母做变量名时,一般I、J、K用来命名整型变量。

常量

规定全用大写字母表示,如果名字必须用多个单词来表示,那么各单词间用“-“分隔。常量要求必须意义明确,能表达出常量的含义。

转载的版权声明:
——————————————————————————
作者:程序爱好者
链接:https://www.jianshu.com/p/f1a9e2dea3ac
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
———————————————————————————
版权声明:本文为CSDN博主「FromNowOnUntilTheEnd」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36688143/article/details/79428732
——————————————————————————

你可能感兴趣的:(C/C++)