代码之美——浅谈命名规则与代码优化

今天再博客园正式开通博客,思来想去第一篇博客应该写什么,发现没有什么比写代码规范更合适的了

我对java更加熟悉,所以重点谈java的代码规范

命名规则

驼峰命名法:当变量名或函数名是由一个或多个单词链接在一起构成的唯一识别字时,第一个单词以小写字母开始;第二个单词首字母大写或每一个单词的首字母都采用大写字母

所以有小驼峰命名法,比如int myBall. class relationDataBase{};等

也有大驼峰命名法(也称帕斯卡命名法)int MyBall,class RelationDataBase{};

那这两个法则是二选一吗?不是,我浏览的很多代码都是

对类的命名,构造方法使用大驼峰,

类的实体,参数,普通方法用小驼峰(普通方法也可以用大驼峰,看个人习惯了)

举个例子

class BaseBall{//类名

  public BaseBall(){};//构造方法

  public void play(){};

  public static void main(String [] args){

    BaseBall baseBall=new baseBall();//类的实体用小驼峰

    baseball.play();

  } 

}

匈牙利命名法

匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。         ——百度百科

用一个国家来命名一个命名法(有点绕~)足以证明此命名法之重要,比如还有与冯诺依曼结构相提并论的哈佛结构

简单来讲,就是取单词的简写,一般取发音的部分(我们可以用匈牙利命名法命名匈牙利命名法为匈命名法,hiahia~)

比如说刚刚那个类BaseBall,用匈牙利命名法就可以命名为bsBall,因为base的发音主要在b和s,类似的,Data->dt,name->nm

至于用大写还是小写,看个人习惯了,一般而言,取简写的部分用小写,连着的全名部分首字母大写,比如bsBall

可能你已经发现了,对于类名较短的类用驼峰比较合适,而类名较长就用匈牙利命名法

 函数内的代码优化

  • 去掉从来没有用到过的参数
  • 始终进行参数检验。不要认为只有我才会调用这个函数,我能够保证参数的有效性。事实上很多运行错误就是没有对参数进行检验。对于传入了非法值的函数调用,可以返回一个对调用无意义的值(如:null,-1),或者干脆抛出一个异常
  • 函数的参数不宜过多,如果实在是太多,可以考虑将这些参数封装在一个类中,然后将这个类的某个实例作为参数传入函数
  • 如果函数从来不会修改某个参数的值,则应该尽量将参数声明为const
  • 如果函数中用到的类成员变量或者其他全局变量可以用传入参数的方式代替,则用参数代替,这样可以减少该函数和外界的关系,提高内聚
  • 一个单一的函数的代码量不宜过多。如果实在很多,则可以把它切分成小的函数,例如长的switch语句是最容易切分的
  • 单个函数中尽量避免相同的代码,可以用条件语句或者抽取出来作为函数的方法消除这些冗余
  • 尽量保持函数只有一个出口,即只有一处return语句,如:

 


原始代码
string GetControlText(int nIndex)
{
        if(ParameterValid() == false)
            return null;
        switch(nIndex)
        {
            case 0:
                return txtValue1.Text;
            case 1:
                return txtValue2.Text;
            …….
        }
}    


优化过的代码
string GetControlText(int nIndex)
{
        string strReturnValue = null;

        if(ParameterValid() == true)
        {
            switch(nIndex)
            {
                case 0:
                    strReturnValue = txtValue1.Text;
                    break;
                case 1:
                    strReturnValue = txtValue2.Text;
                    break;
                …..
            }
        }
        return strReturnValue;
}

当然了,我个人一般写成这样

string GetControlText(int nIndex){
}
"{"与命名在同一行,既不影响美观实用,又节约了一行

这是博客园的第一篇博客,欢迎大家看我的csdn博客哈https://blog.csdn.net/qq_37465638

一起学习,一起进步

原文地址:https://www.cnblogs.com/chen-song/p/9671856.html