标题 | C++教学中编程习惯的培养 |
范文 | 何雪英 摘要:C++是国内大多数高校的计算机专业都开设的一门专业基础课,然而在这门课的教学中,很少有人重视编程习惯的培养。为此,本文通过介绍一些良好的编程风格,结合笔者在实践方面的经验,对培养学生的编程习惯提出了一些建议和看法,以使得学生在学习程序设计初期就养成良好的编程习惯。 关键词:C++教学;编程习惯;编程风格;高质量代码 中圖分类号:G642? ? ? ? 文献标识码:A 文章编号:1009-3044(2019)22-0126-02 开放科学(资源服务)标识码(OSID): 1 引言 C++作为一门优秀的面向对象的程序设计语言,是绝大多数高校计算机专业开设的一门必修课。然而在这门课的教学中,教师往往只重视学生语法学习和算法能力的培养,认为只要学生所编写的程序可以通过调试并能得到正确结果就可以了,却忽视了最基本的编程习惯的培养。实际上,良好的编程习惯在增加程序的可读性、可维护性和可重用性,提高程序的质量等方面,具有非常重要的作用。因此,帮助学生认识到编程习惯的重要性并注意培养他们这方面的能力,使学生在学习高级语言程序设计初期就接受规范编程的教育非常重要,这样可以使得我们的大学生在走出校园前就已经具备了良好的编程素养,为以后进一步的学习和应用打下良好的基础。本文从标识符的命名、注释、代码布局、类的声明和函数设计规则5个方面介绍了一些好的编程规范,并提出具体可行的实践方法,希望能够帮助学生培养良好的编程习惯, 写出高质量的代码。 2编程习惯 养成良好的编程习惯,就是在程序设计过程中要遵循好的程序设计规范,也就是编程风格。包括标识符的命名、注释、代码布局、类的声明和函数设计规则等。 2.1标识符命名 标识符包括常量名、变量名、函数名以及对象名等。标识符的命名应做到既简单直观又能见名知意。名字太简单不宜于阅读者理解程序,因此建议除了循环变量可以使用“i,j”等简单的名字外,其他尽量使用精炼且有意义的名字,可以采用英文单词或其组合,便于记忆和理解,切忌采用汉语拼音命名。如比较著名的匈牙利命名法,每个标识符的开头以其数据类型的缩写命名,然后再加上代表该标识符含义或作用的英文单词简写共同组成。如定义用于计数的整型变量为iCount,定义用于表示性别的字符型变量为cSex等。另外,建议对局部变量小写,符号常量、宏大写[1]。 2.2 注释 注释是指程序设计者在编写代码时所添加的一些说明性语句,只是起到一个解释说明的作用,对程序本身的执行并没有影响。它是提高程序可读性的必要手段,不仅可以帮助阅读者很快地了解程序的功能和结构,对程序设计者本人也是很重要的,有时候我们阅读自己编写没有注释的代码,如果间隔时间比较久,理解起来也会很费劲甚至难以读懂,更不用说去阅读他人编写的代码了。因此,养成良好的编程习惯,注释必不可少。 程序的注释可分为序言性注释和功能性注释[2]。序言性注释是对程序整体性的介绍,通常放在程序开头,内容一般包括:介绍各模块的用途和功能;对函数参数及调用形式进行描述;有关数据相关属性的描述,如名称、用途、约束等;有关开发信息简介,如模块设计者、修改者、修改说明及日期等。功能性注释位于源程序中,通常使用缩进、空行或括号,来区分源程序和注释,对程序段的功能进行描述。这里需要注意的是功能性注释描述的是程序要“做什么”,而不是“怎么做”;描述的对象是一段程序, 而非每一条语句。 2.3 代码布局 程序中代码的布局对于程序的可读性和可维护性也有很大影响,适当的利用缩进、空格、空行等能使程序更整洁美观,层次结构更清晰,方便阅读和维护[3-4]。对比图1(良好的代码布局)和图2(不良的代码布局),前者的优势显而易见。 [#include using namespace std; int main( ) { int i; int sum = 0; cin >> i; while (i <= 10) { sum = sum + i; i++; } cout << “sum=” << sum << endl; return 0; } #include using namespace std; int main( ) {int i, sum=0; cin>>i; while (i<=10) {sum=sum+i; i++;} cout << “sum=”sum << endl; return 0; } 图1? 良好的代码布局 图2? 不良的代码布局 ] (1)代码行的书写:每条语句最好单独占用一行,不在一行上书写多个语句,也不将一条语句分成几行来写。这样既方便对相关内容进行注释,又增加了程序的可读性。 (2)缩进和对齐:对于嵌套的层次结构采用锯齿形的书写方式,根据语句间的逻辑关系进行语句的对齐和缩进。逻辑上属于顺序结构的语句要对齐,逻辑上属于嵌套的语句要往里缩进,可以利用tab键进行缩进和对齐。这样的程序,层次分明,逻辑结构一目了然,可读性强。 (3)空格和空行:过于拥挤的程序,可读性自然大大降低。空格和空行是程序中主要的分隔符,合理地使用它们,会使程序看起来整洁美观,从而增进程序的可读性。 (4) 大括号的位置 对于大括号的位置一般有两种风格:一种风格是“{”独占一行,如图3所示。另一种风格是将“{”放在一行的最后。如图4所示。 [if (condition ) { …/ / programe code } if (condition){ …/ / programe code } 图3? ?大括号的位置 图4? 大括号的位置 ] 推荐使用图3的风格,很显然,这种风格更直观,更易区分出程序块的位置,且便于检查配对情况。 2.4 类的声明 在类的声明中,具有不同访问属性(private、public、protected)的成员的出现顺序可以任意,但一个成员只能具有一种访问属性[5]。但在实际应用时,习惯将public类型成员放在其他类型成员的前面,这样方便阅读,因为用户更关心类提供的接口或服务。 在规模较大的项目中,通常把类的声明放在头文件中(*.h),类的实现放在*.cpp文件中,类的使用放在主函数文件中,在*.cpp文件和主函数文件中使用#include包含*.h文件。 2.5 函数 在面向对象的程序设计中,函数是对功能的抽象,通常将相对独立的、经常使用的功能抽象为函数。由于函数可被重复使用,而且使用时只需了解函数的功能和调用方法,无须关注函数的实现细节,因而提高了代码的重用率和程序开发的效率,同时也便于多人的分工协作和维护。 函数设计总的原则是应该功能单一、规模小。下面重点论述函数的参数、返回值和内部实现的一些规则。 2.5.1函数参数的规则 (1)完整定义参数。不要省略参数类型和参数名,没有参数时,使用void填充。 (2)参数个数不要太多。 (3)参数名要恰当,顺序要合理。例如:对于字符串复制函数strcpy的两个参数,如果仅命名为str1、str2,很难区分出拷贝顺序,而采用dstStr、srcStr這种能够区分目的参数和源参数的命名方式,拷贝顺序一目了然。 void strcat(char *str1, char *str2)? ?//不良的代码习惯 void strcat(char *dstStr, char *srcStr)? ?//良好的代码习惯 2.5.2函数返回值的规则 (1)不要省略函数返回值的类型。没有返回值时,声明为void。 (2)确保返回值类型与声明的函数类型一致。 2.5.3函数实现规则 (1)尽量少用全局变量,确保函数的单入口和单出口。 (2)尽量少用静态局部变量。相同的输入产生相同的输出。 (3)主函数尽量简短。通常只有几个函数调用语句,只是实现对其他功能函数的调用,而这些函数的定义全在主函数外实现。 3 实践方法 针对以上介绍的良好的编程风格,如何融汇到日常的C++的教学中,使学生在学习编程之初就养成良好的编程习惯,笔者提出了自己的一些建议和看法,并付诸了教学实践,效果显著。 3.1 提高对编程习惯重要性的认识 要想让学生认识到好的编程习惯的重要性,首先要在思想上引起学生的重视,才有可能付诸实践。 (1)把编程习惯体现在课堂上。教师的课件、教案都严格遵循好的编程风格;并且教师在讲课的过程中,要把编程习惯融入每个具体的实例中,让学生时刻都能感受到编程习惯的优势和重要性。 (2)把用人单位尤其是一些大型软件公司对编程的要求告诉学生,并找一些实例给学生看,让学生感受什么是好的代码风格。 (3)设计一定数量的综合性实验,让学生分工合作完成。因为合作的过程中要读其他同学的代码,在这个过程中学生能亲身感受到不好的代码风格给自己带来的种种困难,从而认识到养成良好编程习惯的重要性。 3.2 纳入考核标准 在实验成绩计算办法中增加编程习惯所占的比重。无论是平时布置的电子作业,还是最终的考试答题中,都要求学生必须遵守这些编程习惯,并且占一定的分值。 4 结束语 以上所述,只是笔者在多年的C++教学中总结出来的一些心得和体会,实际上在编程习惯方面还有很多其他约定俗成的风格,还有很多值得我们挖掘和探讨的问题,编程习惯的培养任重而道远。 参考文献: [1]何灵敏,许翔,等.C++教学中编程习惯的养成[J].计算机教育,2011. [2]严轶群,刘涛.浅论C语言学习方法和编程风格[J].兰州工业高等专科学校学报,2009. [3]王志超.大学生编程习惯的培养[J].吉林教育,2009. [4]李宁.论C语言中高质量代码编写的规范问题[J].电脑知识与技术,2015. [5]郑莉,董渊,等.C++语言程序设计[M].清华大学出版社,2006. 【通联编辑:王力】 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。