C/C++编程风格教学改革探索

来源 :中国科技博览 | 被引量 : 0次 | 上传用户:wll20071002313
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:在传统的C/C++程序设计教学中,大多数教师并不重视C/C++编程风格教学。实践证明,如果学生编写的程序不注重编程风格,将导致程序的可读性非常差,学生毕业后很难进行团队合作开发大型软件。本文提出一个C/C++编程风格子集作为程序设计基础课程编程风格教学改革参考文档。该编程风格教学子集具体内容包括三个部分:代码格式、注释和命名规范。并针对编程风格教学提出了一些教学建议。
  关键词:编程风格;编程风格教学;编程风格教学子集;程序设计
  【分类号】:G72
  1选取编程风格教学子集的必要性
  计算机科学与技术委员会的一份报告中指出,要想大幅度提高软件开发的质量和工作效率,需要把已知的行之有效的软件开发实践知识归纳,统一并广为传播 [1]。在软件工程中,大多数程序员认为,应该把软件开发中行之有效的实践知识归纳、编撰成一本开发手册。
  在大学程序设计课程中,教师应该引入编程实践非常典型的,完成一个大型软件开发项目所必须的编程风格,可以培养学生良好的编程习惯[6]。
  目前专门介绍编程风格的书籍种类繁多并且内容非常复杂,是针对软件开发人员和程序员而编写的,对于程序设计初学者来说这些编程风格很难理解并采纳。
  经过多年的程序设计教学和毕业生对程序设计课程教学的反馈信息,我们认为,应该在程序设计课程教学中,针对程序设计初学者的特点,提出一个适合用在“程序设计基础”课程中的编程风格教学子集是非常重要的。这个编程风格教学子集在不影响学生学习程序设计语言语法和算法的前提下,作为学生编程风格的基本指导原则。通过这样的一个教学过程可以使学生在初学程序设计时就关注编程风格问题,有助于培养学生良好的编程习惯。
  2编程风格教学子集
  2.1代码格式
  代码格式包括缩进、对齐、空行和空格等的使用。代码格式可以准确表现程序的逻辑结构,提高程序的可读性。
  1.缩进
  (1)缩进风格采用“悬挂式”(Allman)风格[2]
  缩进形式可以显示程序的逻辑结构,增强程序的可理解性。完全没有缩进和过分地使用缩进都会影响程序的可理解性。美国马里兰大学(University of Maryland)对Pascal程序做了一个测试,分别使用四种缩进层次(0,2,4,6个空格)进行调查。结果显示2-4个空格的缩进是最理想的缩进层次[3]。
  由于学生编写的程序规模相对比较小,为了清晰地显示程序的逻辑结构,我们建议学生使用4个空格的缩进风格即“悬挂式”(Allman)风格。“悬挂式”风格把“{”和“}”单独放在一行上,并且缩进尺度相同,括号内的程序语句缩进4个空格。
  “悬挂式”风格的优点是:
  格式清晰整洁,程序逻辑结构清晰
  “{”和“}”上下对齐,视觉上很容易匹配,更易于初学者调试程序。
  (2)缩进只使用空格键,不使用TAB键[4]。
  因为不同的编辑器对TAB键的默认设置是不同的,当使用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局不整齐,因此我们建议学生不要使用TAB键进行缩进。
  2.对齐[5]
  3.空行[5]
  空行起着分隔程序段落的作用,空行可以将程序的相关语句各自划分成段落,分开各子程序、突出注释部分。空行得体将使程序的布局更加清晰。
  (1)每个函数定义结束之后都要加空行。
  (2)在一个函数体内,逻辑上密切相关的语句之间不加空行,其它地方应加空行分隔。如下示例说明了函数内部的空行。
  4.一行代码只做一件事情,如只定义一个变量,或只写一条语句。
  5.长行拆分
  代码行最大长度宜控制在80个字符以内。
  2.2注释
  注释是帮助程序读者理解程序的一种手段。注释的原则是有助于对程序的阅读理解,注释语言必须准确、易懂、简洁。最好的注释是简洁地点明程序的突出特征,帮助别人理解程序。
  1.注释是对代码的“提示”,而不是文档。程序中的注释不可喧宾夺主,注释太多了会让人眼花缭乱。
  2.边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。
  3.注释应当准确、易懂,防止注释有二义性。
  4.尽量避免在注释中使用缩写,特别是不常用缩写。
  2.3命名规范
  命名规范可以传达重要信息,采用良好的命名规范,通过一个字符就可以区分局部变量、类变量和全局变量,大小写字母能精确区别类型、常量和变量。
  1.标识符应当直观且可以拼读,可望文知意,不必进行“解码”。
  标识符最好采用英文单词或其组合,便于记忆和阅读。切忌使用汉语拼音来命名。程序中的英文单词一般不会太复杂,用词应当准确。例如不要把CurrentValue 写成NowValue。
  2.标识符的长度应当符合“最小长度和最大信息量”原则。
  太短的名字无法传达足够的信息,例如x1和x2这样的名字所存在的问题是,即使我们知道了x代表什么,但却很难知道x1和x2之间的关系。一般来说,长名字能更好地表达含义,但不是名字越长约好,太长的名字很难写,同时也会使程序的视觉结构变得模糊不清,例如变量名maxval 就比maxValueUntilOverflow好用。
  3.变量的名字应当使用“名词”或者“形容词+名词”。
  例如:float value; float oldValue;
  4.准确使用对仗词。
  通过应用命名规则来提高对仗词的使用的一致性,从而提高其可读性。比如像max/min这样的一组用词非常容易理解和记忆。而那些与常用语言相去甚远的词则很难记忆,甚至会产生歧义。   5.程序中不要出现仅靠大小写区分的相似的标识符。
  3编程风格教学建议
  1.采用讲座的形式开展编程风格教学
  由于程序设计课程课时所限,教师没有太多的时间讲述关于编程风格的知识,但是讲座既不占用太多的教学时间又可以让学生了解编程风格的重要性和基本规则。讲座的次数可以按照教学进度分时间段进行安排。在学生刚刚开始学习程序设计时,可以先从宏观方面进行讲解,比如编程风格的重要性,编程风格的注意事项,尽量讲一些最基本、易于初学者理解的编程风格要求。等程序设计课程开设中后期时,学生有了一定的编程基础和经验之后,进行一些深入的讲解,比如标示符的命名、注释的使用,此时对于一些编程风格的基本要求要细化。
  最后学生进行课程设计时,再给学生讲解关于编程风格的高级规则。此时学生已经有了较为丰富的编程经验,,此时讲解一些编程风格的高级规则,对于培养学生良好的编程习惯和编写高质量的程序具有重要的意义。
  2.重视编程风格练习
  教师强调了了编程风格的基本要求之后,最关键的环节就是学生必须自己动手编写程序,并且在编写程序的过程中不断贯彻编程风格的基本要求,并进行检测学生遵守编程风格的程度。
  3.进行适当的讨论
  学生学习并了解编程风格的基本知识后,具备了一定的编程基础,下一个环节就是讨论。学生在编写程序的过程中,会对编程风格的要求提出自己的想法和看法,此时教师与学生可以进行适当的讨论。例如:缩进的空格数究竟是4个还是2个好,还是其他格式。先让学生提出自己的看法,然后教师再进行引导和总结。当程序代码规模较小时,缩进4个空格更有利于显示程序的逻辑结构。但是当程序规模增大时,随着嵌套层次的增多,此时缩进2个空格相对更合适一些。然后教师要强调,学习编程风格的目的不是要求学生记住一些死规则,而是要活学活用。编程风格的精髓是在编写程序时要始终坚持一种风格,同时在进行团队合作时,团队的所有成员要遵循统一的编程风格。有约定比约定某个细节更重要[1],关键是通过编程风格的学习养成一种良好的编程习惯。
  4、教师要起到表率作用[6]
  程序设计基础是计算机专业学生进入大学之后开设的第一门程序设计课程,对于学生来说,教师在他们的心目中就是“榜样”,教师在讲课、辅导时所表现出来的代码格式的编排、标示符的命名等一些细节问题都会潜移默化地影响学生。所以教师在教学过程中要自始至终贯穿良好的编程风格,在编程风格方面起到表率作用。
  5、选好教材
  现有的程序设计课程教材虽然很多,但能够专门安排一定的版面阐述编程风格内容的却很少。甚至有些教材不但没有编程风格的章节内容,就连书中程序范例的编程风格也不统一。学生在学习程序设计时,模仿的程序范例主要有两个来源,一个是教师,另外一个就是教材。而且更为普遍的是模仿教材中的程序范例,如果教材中的程序没有良好的编程风格,学生就会不知不觉模仿教材中 “随意的编程风格”,久而久之就养成了不良的编程习惯。
  程序设计课程教师在选择教材时,不但要考虑程序设计的技术、问题分析与算法实现,还要考虑该书是否具有良好的编程风格。目前很多国内程序设计课程教材的编者已经逐渐开始重视编程风格的重要性,在教材中特别安排一些章节阐述编程风格的内容,我们可以选用这些优秀的应该教材。
  4小结
  编程风格的内容远不止如此,以上所述只是编程风格的最基本的内容,我们把这个子集作为程序设计基础课程改革的编程风格教学参考文档,这只是只是一个经验的子集,还需我们广大教师结合教学实际不断的进行调整和验证。
  参考文献
  [1]Steve McConnell.代码大全(第2版) [M] .金戈,汤凌,陈硕等译. 北京:电子工业出版社,2006:729.
  [2]Pete Goodliffe 著. 编程匠艺 [M] .韩江,陈玉等译. 北京:电子工业出版社,2008:27.
  [3]Richard J. Miara,Joyce A. Musselman, et al. Program Indentation and Comprehensibility [EB/OL]. http://portal.acm.org/citation.cfm?id=358437.2010-2-16:
  [4]Justus Piater. A Guide to Coding Style [EB/OL]. http://www.montefiore.ulg.ac.be/~piater/Cours/Coding-Style/Coding-Style.pdf. 2010-2-16:
  [5]林锐,韩永泉.高质量程序设计指南-C++/C语言[M]. 北京:电子工业出版社,2008: 179.
  [6]罗新星,高阳. 程序设计风格及其培养[J]. 现代大学教育, 1993(2):24-28.
  作者简介:张良德(1978-),男,内蒙古兴安盟人,讲师,硕士,研究方向:计算机教育。
其他文献
[摘 要]在火电站安装过程中,受热面管子主要是小径管,而管口的焊接质量与锅炉的运行息息相关。小径管的质量检测主要依赖于射线检测和超声波检测,本文分析了小径管超声波检测的困难,并对射线检测与超声波检测进行了分析和现场实验,通过现场检测得出超声波检测的准确率是可行的。  [关键字] 小径管;超声波检测;应用  【分类号】:TG333.7  引言  小径管指的是壁厚4~14mm,外径32~89mm的管子
期刊
[摘 要] 根据全塑阻燃整芯输送带的结构要求,进行优良选择芯体,芯糊配方设计,覆盖层配方设计,利用阻燃剂的并用,产生协同效应达到阻燃效果。分析选择了增塑剂,阻燃剂和静电剂,通过工艺参数的设计,生产出达到国家标准的产品。  [关键词] 挤擦法 带芯 增塑 阻燃 抗静电  【分类号】:TG333.7  随着对煤矿井下使用的输送带安全性能的要求不断提高,新型的煤矿用阻燃整芯输送带取代传统的橡胶分层输送带
期刊
[摘要]治理理论自产生至今已经成为公共行政领域的热点主体。同样对大学生志愿者组织的长效建设也有一定的理论指导意义。本文分析了当前大学生志愿者组织的概述和发展趋势,通过介绍治理理论兴起、本质,从治理理论的角度分析大学生志愿者组织存在的问题,以及对大学生志愿者组织发展的启示。  [关键词] 治理理论;大学生志愿者组织;发展  【分类号】:F426.31  随着近年来治理理论的兴起,志愿活动作为治理理论
期刊
[摘要]沿空掘巷技术对合理开发地下资源,提高煤炭采出率,延长矿井开采期限具有重要意义,是支护技术改革的关键技术之一。本文首先介绍了沿空掘巷围岩活动规律,然后对沿空巷道支护技术进行了分析,最后结合工程实践提出相关的支护设计。  [关键词]巷道掘进 沿空掘巷 围岩控制 支护设计  中图分类号:TD322.3 文献标识码:A 文章编号:  0引言  随着人类对煤炭需求量的日益增加,开采规模不断扩大,浅部
期刊
[摘 要]随着开采深度增加,煤与瓦斯突出已经成为煤矿最严重的地质灾害。由于构造异常带是发生煤与瓦斯突出的最危险地带,因而,及时发现采掘工作面前方隐伏的地质构造,是消除煤与瓦斯突出危险的关键。文章提出采用基于瓦斯抽采钻孔的煤矿瓦斯地质精细勘查来及时发现工作面前方的地质构造。  [关键词] 煤矿 煤与瓦斯突出 地质构造 精细勘查  中图分类号 : TD712 文献标识码:A 文章编号:  1 前言  
期刊
[ 摘 要]文章结合作者多年来工作经验分析了医用中心供氧系统可靠性方面的设计,起到一定的借鉴作用。  [关键词] 供氧系统 装置设计  中图分类号::R197.39文献标识码:A 文章编号:  引言:解决大流量。供氧气体的最佳分配, 供气压力, 流量稳定使用可靠性问题。这是医用中心供氧系统设计的特点和难点,对此结合本人多年工作经历做以下论述:  1.中心供氧站设计  (1)目前多数大医院中心供氧站
期刊
摘要:螺杆马达作为孔底碎岩动力,具有定向钻进效果好、易侧钻分支、不用反复起下钻具、施工工序简单、可以和测斜仪器配合准确控制钻孔轨迹等特点,通过调整螺杆马达上弯接头的工具面向角朝向,可控制钻孔的倾角和方位,从而实现钻孔的受控定向和侧钻开分支,本文选用螺杆马达作为分支孔施工的特种钻具,并对其性能进行研究。  关键词:支状钻孔;螺杆马达;选型;性能分析;数据分析  中图分类号:TU 文献标识码:A 文章
期刊
[摘 要]随着风力发电机单机容量越来越大,机舱、发电机的加热和散热问题成为人们关注的焦点。传统的发电机空气冷却系统和冬季机舱加热系统耗电量越来越大,且很难满足机组稳定散热的需要,本文提出了一种高效节能的发电机空气冷却系统,详细分析了这种冷却系统的优势。对大功率的风力发电机散热系统设计和研究具有较强的参考价值。  [关 键 词]风力发电机 散热 自动控制  中图分类号:TM315 文献标识码:A 文
期刊
[摘 要] 摘 要] 过去我们都是用500T/300T卧式油压系统,卧式油压系统简单,单向缸单向进给,回程靠重锤;现在我们使用立式油压系统,双向进程,需设计回程油路同时控制液压系统的稳定,并保证活塞杆不受重力影响下滑,用远程控制阀。  关键词:远程控制阀、液压系统、先导阀  【分类号】:TG333.7  1.液压系统是液压设备的一个组成部分,它与主机的关系密切,液压系统通常由三个功能部分和辅助装置
期刊
[摘 要] 采用草酸滴定生石灰中有效钙,因草酸酸性较盐酸弱,在测定过程中能避开碳酸盐、碳酸氢盐等杂质,相对于使用盐酸滴定检测,选用草酸能更准确的检测出生石灰中的有效钙含量。  [关键词] 生石灰,有效钙,草酸  中图分类号:TF802 文献标识码:A 文章编号:  一、前言  栾川龙宇钼业小庙岭选矿公司是一个钼矿石处理量10000t/d的选厂,在钼选矿生产过程中生石灰是一种必不可少的选矿药剂,在生
期刊