因为我个人主用Java,所以说明和代码都是基于Java里的内容。但很多内容我个人觉得适用于其他的语言上。当然不喜勿喷,以下内容纯属个人爱好而已,提供给各位参考或者不参考。
不正经的命名篇
早期我在定义一个方法,往往会通过具体到每个单词的含义来表达一个方法的内容,例如:
public void findSameOrderByTypeAndDateWithUserId( int orderType, Date orderDate, int userId );
而现在,我偏向通过关键单词和适当的注释来定义:
/**
* @param _type 订单类型
* @param _date 查询日期
* @param _user 用户ID
*/
public void findSameOrderBy( int _type, Date _date, int _user );
/**
* @param _user 用户ID
*/
public void findSameOrderBy( int _user );
/**
* @param _start 起始日期
* @param _end 结束日期
*/
public void findSameOrderBy( Date _start, Date _end );
注意这里有个细节,参数我使用了下划线。通过识别变量的写法,我能有效知道它的作用范围,当然你可以依旧使用Ctrl链接过去,Ctrl+F查找过去。
除了这些,我还会用一些砍单词方式来定义一些变量。比如 resetList写成relist,readyList写成relist,releaseList写成relist。尽管这个不太可读,但我实在不想把一个局部变量定义的那么复杂。如果遇到循环,各位可能更会嫌弃我的写法:
relist.forEach( e -> { Sysout.out.println( e.getId() ); }); // 循环里的变量基本上只用一个字母来表示。
更奇葩的是,不管什么循环,我不会额外在定义一个字母来区分它们里面的元素。也就是说不管你是userList还是animalList,我循环起来,里面元素都叫e(element)。
以下是我的不正经命名已整理的内容:
类和类型命名
public interface I<Type><Name>{} eg: public interface IModelEvent
public abstract class Abs<Type><Name>{} eg: public abstract class AbsModelEvent
public class <Type><Name>{} eg: public class ModelEventImpl
private class <Type><Name>{} eg: private class ModelEventPrime
enum e<Type><Name>{ eg: enum eEventType{
None, Wait, Done, None, Wait, Done,
} Type_None, Type_Done,
TypeEL_NoneOne, TypeEL_DoneOne,
}
成员变量命名
public static final int PUBLIC_STATIC_FINAL = 0; eg: P S F I DEFAULT_CODE = 100;
public static int Public_Static_Int = 0; eg: P S I Default_Code = 100;
public int publicInt = 0; eg: P I defaultCode = 100;
private int privateInt = 0; eg: P I defaultCode = 100;
方法和参数命名
public static void s_public_method( int _paramInt ){}
public static void s_Public_Method( int _paramInt ){}
public void publicMethod( int _paramInt ){}
protected void protectedMethod( int _paramInt ){}
private void _private_method( int _paramInt ){}
编码
public void test( int _arg0 ){
方法内和循环变量命名
int local_val;
int num = 0;
int user_num = 0;
list.forEach( e -> {} );
单循环
for( Type t : tlist )
for( Uesr u : ulist );
多级循环,同类型用e0,e1表示,不同类型,用首字母表示。
不同类型,同首字母的其中一个换个别名吧。
return user_num + num + _arg0;
}