非优雅的编程技巧(半驼峰命名)

因为我个人主用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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值