让你提前认识软件开发(7):变量及函数的命名

第1部分 重新认识C语言

变量及函数的命名

 

         最近看了一则笑话,大意是路人甲到电信营业厅去交电话费,给营业员说要充50块钱,那个营业员问了一句“How much?”。路人甲心想现在社会真的与以往不同了,连一般的营业员都开始流行讲英语了,于是便以不是很流利的口语说了一句“Fifty YUAN”。那个营业员一头雾水地看着他,说道“电话号码多少?”路人甲这才恍然大悟,原来是问我电话号码多少,而非多少钱。

        也许这个笑话本身并不好笑,但却说明了一个道理:我们要尽量准确地表达自己的想法,不要让别人感到疑惑。这个原理同样适用于软件开发过程,适用于编写代码的过程。

        我们在编程过程中,要保证自己写的每一行语句都表意准确,让别人一看就能够明白,特别是对于变量和函数的命名。受学校教育的影响,诸如“int i,j;”、“char c;”之类的变量定义到处都是,严重影响了工作的效率。

        在本文中,我也不想说一些条条框框的东西,而是以一个实际的例子来为读者展示如何命名变量和函数是恰当的。这里用《学校C语言教材的缺陷》这篇文章中出现的程序代码为例,将该代码按照规范修改后,如下所示:

/***************************************************************

*版权所有 (C)2014,company name

*

*文件名称:example.c

*内容摘要:用于示范如何给变量和函数做规范的命名

*其它说明:无

*当前版本:V1.0

*   者:周兆熊

*完成日期:20140325

*

*修改记录1   //修改历史记录,包括修改日期、版本号、修改人及修改内容等

*   修改日期:

*   版本号:

*   修改人:

*   修改内容:

***************************************************************/

 

#include <stdio.h>

 

typedef signed int INT32;                       //重定义数据类型

typedef float     FLOAT;                     //重定义数据类型

 

FLOAT ProcessFactorial(INT32 iInputValue);       //函数声明

 

/**********************************************************************

 *功能描述:主函数

 *输入参数:无

 *输出参数:无

 *返回值:无

 *其它说明:无

 *修改日期           版本号          修改人        修改内容

 * ------------------------------------------------------------------------------------------------------

 * 20140325            V1.0            周兆熊          创建

 ***********************************************************************/

INT32 main()

{

    INT32  iInputValue = 0;

    FLOAT fResult     = 0.0;

    printf("input an integer number: ");

    scanf("%d", &iInputValue);

      

    fResult = ProcessFactorial(iInputValue);     //调用求阶乘的函数

      

    printf("%d!=%10.0f\n", iInputValue, fResult);

 

    return 0;

}

 

 

/**********************************************************************

 *功能描述:求一个数的阶乘

 *输入参数: iInputValue-输入值

 *输出参数:无

 *返回值:求阶乘后的结果

 *其它说明:无

 *修改日期           版本号          修改人        修改内容

 * -----------------------------------------------------------------------------------------------------

 * 20140325            V1.0            周兆熊          创建

 ***********************************************************************/

FLOAT ProcessFactorial(INT32 iInputValue)

{

    FLOAT  fResult    = 0.0;

      

       //先判断输入值是否小于0

    if (iInputValue < 0)

    {

          printf("iInputValue < 0, dataerror!");

          return -1;

    }

    else

     {

          if (iInputValue == 0 || iInputValue == 1)  // 01的阶乘是1

          {

                fResult = 1;

           }

          else

          {

                fResult = ProcessFactorial(iInputValue-1)*iInputValue;  //执行递归调用

           }

             

            return(fResult);

       }

}

 

        该代码和之前的代码相比,是不是有很大的不同?

        有关类型重定义、注释等相关内容,请参考我之前的文章,这里重点说一下变量和函数的命名: 

        (1) 变量命名和函数命名应具备描述性,不要过度缩写。变量的命名应该使用名词,如fResult;函数的命名应该使用“命令性”动词,如ProcessFactorial

        (2)不管是函数还是变量,它们的命名只有一个原则:让读者一眼就能够看出它们表达的意思。如ProcessFactorial函数,一看到它,就大概能够明白这是在求阶乘(如果你英语确实不好,那就另当别论了)iInputValue变量,表示输入值;fResult变量,表示结果值。我们要让代码自己来说话,而不是要作者向别人解释半天才行。

        (3)为了让读者看到一个变量就知道其类型,在变量的最前面,通常会有一个标识类型的字母。如iInputValue中的第一个字母“i”表示这是一个整型变量(i”代表“int)fResult中的第一个字母“f”表示这是一个浮点型变量(f”代表“float)。这样做,也是为了更进一步让读者对代码能够了然于心,能够很容易读懂,这样也省去了作者的很多向别人解释的时间,可谓是“大家皆方便”。

        (4) 函数的功能要单一,不要设计多用途的函数;函数体的规模要小,将函数内的代码行数控制在项目中规定的范围之内。此外,要尽量避免函数带有“记忆”功能,相同的输入应该产生相同的输出。

        (5)始终要明白,我们第一是为人编写代码,其次才是计算机。如果只是计算机能够读懂的代码,不是好代码,也无法体现出一个编程人员的水平。

 

       对于函数的调用,需要注意以下几点:

       (1)在调用的时候,传入的实参的类型一定要与形参的类型完全一样。如果不一致,用代码检查工具(Pclint)是很容易发现的。如果确实需要传入该参数,可使用强制数据类型转换。

       (2)对于有返回值的函数,尽量在被调用的时候对返回值进行处理。在实际的软件开发中,有很多人定义了一个有返回值的函数,但直接调用该函数,而没有对返回值进行处理,这是不规范的。例如,定义一个返回整型值的函数ExampleFun,如下所示:

int ExampleFun(…)

{

    //执行代码

 

    return 0;

}

       而调用代码如下:

……

ExampleFun(…);

……

       没有考虑到返回值。

       规范的作法是:同样定义一个整型变量,用于表示该函数的返回值,如下代码所示:

int iRetVal = 0;

……

iRetVal = ExampleFun(…);

……

 

        很多人认为写代码很枯燥,其实不然。如果你每天写出来的代码像谭浩强老师写的《C程序设计》中那些代码一样,当然会觉得枯燥,也许你昨天写的代码,今天就不知道它们是什么意思了。但如果你时刻牢记编程规则,写出“自己能够说话的代码(即变量和函数的命名很恰当),那么你就不会觉得这份工作很枯燥,反而会觉得它很有趣。这可能就是所谓的“编程境界”吧。

       “熟能生巧”,只有通过不断地练习,我们才能够懂得编写代码的诀窍,也才能够写得出好的、高质量的代码。

 

(欢迎访问南邮BBS:http://bbs.njupt.edu.cn/)
(欢迎访问重邮BBS:http://bbs.cqupt.edu.cn/nForum/index)

(本系列文章每周更新两篇,敬请期待!本人新浪微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
下面是一个简单的软件开发编码规范模板,你可以根据自己的需求和团队的要求进行修改和定制: 1. 命名规范: - 变量函数和类名使用有意义的名称,遵循驼峰命名法或下划线命名法。 - 避免使用缩写和简写,除非是广为接受的行业术语。 2. 缩进和空格: - 使用统一的缩进风格,比如使用四个空格或者一个制表符。 - 在运算符两边和逗号后面添加一个空格,提高代码的可读性。 3. 注释规范: - 在关键代码块前添加注释,解释其作用和意图。 - 使用自然语言描述代码的功能和用途。 - 在函数、方法和类的定义处添加注释,描述其输入、输出和功能。 4. 函数和方法规范: - 函数或方法应该尽量做到单一责任原则,只完成一个具体任务。 - 使用有意义的函数名,表达其功能和目的。 - 添加函数注释,描述函数的输入、输出和功能。 5. 异常处理: - 对可能抛出异常的代码进行适当的异常处理,避免程序崩溃。 - 使用具体的异常类型,并添加适当的错误处理逻辑。 6. 代码复用: - 尽量避免重复代码,将常用的代码块封装成函数或类,提高代码的可维护性。 - 使用模块化的方式组织代码,将功能相似的代码放在同一个模块中。 7. 版本控制: - 使用版本控制工具进行代码管理,并遵循分支管理策略。 - 提交代码前进行代码审查,确保代码质量和规范。 请注意,这只是一个简单的模板,实际的编码规范应根据项目和团队需求进行定制。编码规范的目的是提高代码的可读性、可维护性和团队协作能力,因此在制定编码规范时应考虑到团队成员的实际情况和项目的特点。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周兆熊-IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值