已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
引领IT潮流规划IT职业人生清华认证IT工程师第1分册第4册编程模式和编码规范目录编程模式与编码规范1第一节计算机程序设计语言的发展2第二节软件621软件的概念、特点和分类622软件开发的方法与技术1123软件开发模型12第三节软件开发程序编制标准1831为什么要编码规范1832HTML语言标准1833C语言标准2234JAVA语言标准3235软件开发界面标准36编程模式与编码规范本章重点一、计算机程序设计语言的发展二、软件三、软件开发程序编制标准第一节计算机程序设计语言的发展【讲解要点】计算机程序设计语言胡发展。自1946年世界上第一台电子计算机问世以来,计算机科学及其应用的发展十分迅猛,计算机被广泛地应用于人类生产、生活的各个领域,推动了社会的进步与发展。特别是随着国际互联网(INTERNET)日益深入千家万户,传统的信息收集、传输及交换方式正被革命性地改变,已经难以摆脱对计算机的依赖,计算机已将人类带入了一个新的时代信息时代。新的时代基本要求之一是自觉地、主动地学习和掌握计算机的基本知识和基本技能,并把它作为自己应该具备的基本素质。要充分认识到,缺乏计算机知识,就是信息时代的“文盲”。对于理工科的大学生而言,一门高级语言及其基本的编程技能的掌握是必需的,大学学习,除了掌握本专业的系统的基础知识外,科学精神的培养,思维方法的锻炼,严谨踏实的科研作风养成,以及分析问题、解决问题的能力的训练,都是日后工作的基础。学习计算机语言,正是一种十分有益的训练方式,而语言本身又是与计算机进行交互的有力的工具。一台计算机是由硬件系统和软件系统两大部分构成的,硬件是物质基础,而软件可以说是计算机的灵魂,没有软件,计算机是一台“裸机”,是什么也不能干的,有了软件,才能灵动起来,成为一台真正的“电脑”。所有的软件,都是用计算机语言编写的。本节内容计算机程序设计语言胡发展预计课时1课时计算机程序设计语言的发展,经历了从机器语言、汇编语言到高级语言的历程。1机器语言电子计算机所使用的是由“”和“”组成的二进制数,二进制是计算机语言的基础。计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由“”和“”组成的指令序列交由计算机执行,这种语言,就是机器语言。使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。机器语言,是第一代计算机语言。2汇编语言为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”代表加法,“MOV”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。汇编语言同样十分依赖于机器硬件,移植性不好,但效率十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。3高级语言从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。经过努力,1954年,第一个完全脱离机器硬件的高级语言FORTRAN问世了,四十多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、PASCAL、C、PROLOGO、ADA、C、VC、VB、DELPHI、JAVA等。高级语言的发展也经历了从早期语言到结构化程序设计语言,从面向过程到非过程化程序语言的过程。相应地,软件的开发也由最初的个体手工作坊式的封闭式生产,发展为产业化、流水线式的工业化生产。六十年代中后期,软件越来越多,规模越来越大,而软件的生产基本上是个自为战,缺乏科学规范的系统规划与测试、评估标准,其恶果是大批耗费巨资建立起来的软件系统,由于含有错误而无法使用,甚至带来巨大损失,软件给人的感觉是越来越不可靠,以致几乎没有不出错的软件。这一切,极大地震动了计算机界,史称“软件危机”。人们认识到大型程序的编制不同于写小程序,它应该是一项新的技术,应该像处理工程一样处理软件研制的全过程。程序的设计应易于保证正确性,也便于验证正确性。1969年,结构化程序设计方法被提出,1970年,第一个结构化程序设计语言PASCAL语言出现,标志着结构化程序设计时期的开始。八十年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象的程序设计。在此之前的高级语言,几乎都是面向过程的,程序的执行是流水线似的,在一个模块被执行完成前,人们不能干别的事,也无法动态地改变程序的执行方向。这和人们日常处理事物的方式是不一致的,对人而言是希望发生一件事就处理一件事,也就是说,不能面向过程,而应是面向具体的应用功能,也就是对象(OBJECT)。其方法就是软件的集成化,如同硬件的集成电路一样,生产一些通用的、封装紧密的功能模块,称之为软件集成块,它与具体应用无关,但能相互组合,完成具体的应用功能,同时又能重复使用。对使用者来说,只关心它的接口(输入量、输出量)及能实现的功能,至于如何实现的,那是它内部的事,使用者完全不用关心,C、VB、DELPHI就是典型代表。高级语言的下一个发展目标是面向应用,也就是说只需要告诉程序要干什么,程序就能自动生成算法,自动进行处理,这就是非过程化的程序语言。第二节软件【讲解要点】软件的开发、特点和分类以及开发技术。21软件的概念、特点和分类1软件的概念软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。2软件的特点(1)软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性;(2)软件的生产与硬件不同,它没有明显的制造过程。对软件的质量控制,必须着重在软件开发方面下功夫;(3)在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。然而它存在退化问题,必须对其进行多次修改与维护;(4)软件的开发和运行常常受到计算机系统的制约,对计算机系统有着不同程度的依赖性。为了解除这种依赖性,在软件开发中提出了软件移植的问题;本节内容软件的概念、特点和分类软件开发的方法与技术预计课时1课时(5)软件的开发至今尚未完全摆脱手工艺的开发方式;(6)软件本身是复杂的。软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性;(7)软件成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的;(8)相当多的软件工作涉及社会因素。许多软件的开发和运行涉及机构、体制及管理方式等问题,甚至涉及人的观念和人们的心理。它直接影响到项目的成败。3软件与硬件的异同软件与硬件的主要不同点如图1,图2所示。图1图2硬件与软件间的相似之处有如下几点(1)硬件可靠性是设备复杂性的函数;直观地看,软件可靠性也是其复杂性的函数。系统越复杂,其可靠性越低;(2)尽管硬件与软件的失效机理不同,但硬件与软件失效的外部表现都具有明显的随机性,都采用概率统计方法研究硬件和软件产品的可靠性;(3)如果固态电子器件(如晶体管和微型电路)的制造质量好,那么,在很长的时期内,它们没有耗损机理。造成故障的缺陷(不包括明显误用器件造成的故障)是在器件的制造过程中引入的。软件也是如此;(4)硬件可靠性可以采用可靠性增长试验来提高,也就是采用试验分析改正计划来发现、确定及改正可能造成设备早期故障的故障模式及机理。这与在软件中寻找和消除“缺陷”,并且因此提高可靠性的做法类似;(5)软件质量管理方法与硬件质量管理方法有许多相似之处,可以将许多成熟的硬件质量管理方法直接应用于软件质量管理。4软件的分类方法(1)按软件的功能进行划分系统软件能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件。例如,操作系统、数据库管理系统、设备驱动程序以及通信处理程序等;支撑软件是协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件产品的工具,也包括帮助管理人员控制开发的进程的工具;应用软件是在特定领域内开发,为特定目的服务的一类软件。其中包括为特定目的进行的数据采集、加工、存储和分析服务的资源管理软件;(2)按软件服务对象的范围划分项目软件也称定制软件,是受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约束下开发的软件。例如军用防空指挥系统、卫星控制系统;产品软件是由软件开发机构开发出来直接提供给市场,或是为千百个用户服务的软件。例如,文字处理软件、财务处理软件、人事管理软件等。(3)按软件规模进行划分按开发软件所需的人力、时间以及完成的源程序行数,可确定如表1所示的六种不同规模的软件。表1软件规模的分类类别参加人员数研制期限产品规模(源程序行数)微型小型中型大型甚大型极大型112552010010002000500014周16月12年23年45年510年05K1K2K5K50K50K100K1M(1000K)1M10M规模大、时间长、很多人参加的软件项目,其开发工作必须要有软件工程的知识做指导。而规模小、时间短、参加人员少的软件项目也要有软件工程概念,遵循一定的开发规范。其基本原则是一样的,只是对软件工程技术依赖的程度不同而已。(4)按软件工作方式划分实时处理软件指在事件或数据产生时,立即予以处理,并及时反馈信号,控制需要监测和控制过程的软件。主要包括数据采集、分析、输出三部分。分时软件允许多个联机用户同时使用计算机。交互式软件能实现人机通信的软件。批处理软件把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理完的软件。(5)按使用的频度进行划分有的软件开发出来仅供一次使用。例如用于人口普查、工业普查的软件。另外有些软件具有较高的使用频度,如天气预报软件。(6)按软件失效的影响进行划分有的软件在工作中出现了故障,造成软件失效,可能给软件整个系统带来的影响不大。有的软件一旦失效,可能酿成灾难性后果,例如财务金融、交通通信、航空航天等软件,称这类软件为关键软件。22软件开发的方法与技术软件开发的方法与技术方面实际上分为两类,其一是结果表示,其二是过程表示。以结果描述的开发方法,主要分为两种。1结构化方法结构化开发方法是由EYOURDON和LLCONSTANTINE提出的,即所谓的SASD方法,也可称为面向功能的软件开发方法或面向数据流的软件开发方法。YOURDON方法是80年代使用最广泛的软件开发方法。它首先用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(SP)。它给出了两类典型的软件结构(变换型和事务型)使软件开发的成功率大大提高。2面向对象方法当前计算机业界最流行的几个单词就是分布式、并行和面向对象这几个术语。由此可以看到面向对象这个概念在当前计算机业界的地位。比如当前流行的两大面向对象技术DCOM和CORBA就是例子。当然实际用到的还是面向对象的编程语言,比如C。不可否认,面向对象技术是软件技术的一次革命,在软件开发史上具有里程碑的意义。随着OOP(面向对象编程)向OOD(面向对象设计)和OOA(面向对象分析)的发展,最终形成面向对象的软件开发方法OMT(OBJECTMODELINGTECHNIQUE)。这是一种自底向上和自顶向下相结合的方法,而且它以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。所以OMT彻底实现了PAM没有完全实现的功能。不仅如此,OO技术在需求分析、可维护性和可靠性这三个软件开发的关键环节和质量指标上有了实质性的突破,基本地解决了在这些方面存在的严重问题。综上所述,面向对象系统采用了自底向上的归纳、自顶向下的分解的方法,它通过对对象模型的建立,能够真正建立基于用户的需求,而且系统的可维护性大大改善。当前业界关于面向对象建模的标准是UML(UNIFIEDMODELINGLANGUAGE)。23软件开发模型软件开发模型是软件开发的全部过程、活动和任务的结构框架。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目开发的基础。典型的开发模型有瀑布模型(WATERFALLMODEL)、渐增模型/演化/迭代(INCREMENTALMODEL)、原型模型(PROTOTYPEMODEL)、螺旋模型(SPIRALMODEL)、喷泉模型(FOUNTAINMODEL)、智能模型(INTELLIGENTMODEL、混合模型(HYBRIDMODEL)。1瀑布模型瀑布模型将软件生命周期的各项活动规定为依固定顺序联接的若干阶段工作,形如瀑布流水,最终得到软件产品。其优点为(1)强调开发的阶段性;(2)强调早期计划及需求调查;(3)强调产品测试。其缺点为(1)依赖于早期进行的唯一一次需求调查,不能适应需求的变化;(2)由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;(3)风险往往迟至后期的开发阶段才显露,因而失去及早纠正的机会。图3瀑布式生存周期模型2渐增模型/演化/迭代演化模型主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现。软件开发人员根据用户的需求,首先开发核心系统。当该核心系统投入运行后,用户试用之,完成他们的工作,并提出精化系统、增强系统能力的需求。软件开发人员根据用户的反馈,实施开发的迭代过程。第一迭代过程均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管理的子集。在开发模式上采取分批循环开发的办法,每循环开发一部分的功能,它们成为这个产品的原型的新增功能。于是,设计就不断地演化出新的系统。实际上,这个模型可看作是重复执行的多个“瀑布模型”。演化模型又可细分为增量模型和渐进模型。原型化开发方法在实际应用中一般的步骤(1)快速分析。快速确定软件系统的基本要求;(2)构造原型。尽快实现一个可运行的系统;(3)运行和评价原型。验证原型的正确程度,根据用户的新设想,提出全面的修改意见;(4)修正和改进。首先修改并确定需求规格说明,然后再重新构造或修改原型。(5)判定原型是否完成。如果用户认可,迭代过程可以结束;否则,继续迭代;(6)判断原型细部是否说明;(7)原型细部的说明;(8)判定原型效果;(9)整理原型和提供文档。原型模型按需求分成增量模型及渐进模型两种。(1)增量模型对于需求不能很快全部明确的系统,软件开发项目难于做到一次开发成功,可使用此模型。此时,应尽可能明确已知的软件需求,完成相应的需求分析,并按瀑布模型的方法进行第一次开发工作。在系统集成时,通过实验找出需求中的欠缺和不足之处,明确那些未知的软件需求,再迭代进行增加部分的需求分析和开发。对有些系统这种反复可能要进行几次,但尽可能不要超过两次,否则难以控制软件的结构规模、开发质量和进度。(2)渐进模型此模型主要是针对部分需求尽管明确但一时难以准确进行定义的系统设计。如用户的操作界面等。使用此模型时,可以先做初步的需求分析,之后立即进行设计和编码,随后与系统进行第一次集成(不做或少做测试)。根据集成后反映的问题,进一步做更全面的需求分析、设计、编码、测试和集成。3螺旋模型螺旋模型基本的做法是在“瀑布模型”的每一个开发阶段之前,引入非常严格的风险识别、风险分析和风险控制。直到采取了消除风险的措施之后,才开始计划下一阶段的开发工作。否则,项目就很可能被取消。另外,如果有充足的把握判断遗留的风险已降低到一定的程度,项目管理人员可做出决定让余下的开发工作采用另外的生命周期模型,如“演化模型”,“瀑布模型”,或自定的混合模型。其优点(1)强调严格的全过程风险管理。(2)强调各开发阶段的质量。(3)提供机会检讨项目是否有价值继续下去。其缺点引入非常严格的风险识别,风险分析,和风险控制,这对风险管理的技能水平提出了很高的要求。这需要人员,资金,和时间的投入。对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析。螺旋模型沿着螺线旋转,如图4所示,在笛卡尔坐标的四个象限上分别表达了四个方面的活动,即(1)制定计划确定软件目标,选定实施方案,弄清项目开发的限制条件;(2)风险分析分析所选方案,考虑如何识别和消除风险;(3)实施工程实施软件开发;(4)客户评估评价开发工作,提出修正建议。沿螺线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。图4螺旋模型螺旋模型是瀑布模型与演化模型相结合,并加入两者所忽略的风险分析所建立的一种软件开发模型。该模型于1998年由美国TRW公司(BWBOEHM)提出。软件项目风险的大小作为指引软件过程的一个重要因素,引入这一概念有可能使得软件开发被看作一种元模型,因为它能包容任何一个开发过程模型。螺旋模型是软件开发的高级策略,它不仅适合结构化方法而且更适合面向对象方法。它的实施将对软件开发组织的工作模式、人员素质、管理和技术水平产生深远的影响,是最有前途的过程模型之一。4快速原型快速原型(RAPIDPROTOTYPE)在功能上等价于产品的一个子集。注意,这里说的是功能上。瀑布模型的缺点就在于不够直观,快速原型法就解决了这个问题。一般来说,根据客户的需要在很短的时间内解决用户最迫切需要,完成一个可以演示的产品。这个产品只是实现部分的功能(最重要的)。它最重要的目的是为了确定用户的真正需求。在经验中,这种方法非常的有效,原先对计算机没有丝毫概念的用户在原型面前往往口若悬河,有些观点都觉得非常的吃惊。在得到用户的需求之后,原型将被抛弃。因为原型开发的速度很快,设计方面是几乎没有考虑的,如果保留原型的话,在随后的开发中会为此付出极大的代价。至于保留原型方面,也是有一种叫做增量模型是这么做的,但这种模型并不为大家所接受。5喷泉模型喷泉模型对软件复用和生存周期中多项开发活动的集成提供了支持,主要支持面向对象的开发方法。“喷泉”一词本身体现了迭代和无间隙特性。系统某个部分常常重复工作多次,相关功能在每次迭代中随之加入演进的系统。所谓无间隙是指在开发活动,即分析、设计和编码之间不存在明显的边界,如图5所示图5喷泉模型喷泉模型(FOUNTAINMODEL)与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。智能模型(四代技术(4GL)拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。这种方法需要四代语言(4GL)的支持。4GL不同于三代语言,其主要特征是用户界面极端友好,即使没有受过训练的非专业程序员,也能用它编写程序;它是一种声明式、交互式和非过程性编程语言。4GL还具有高效的程序代码、智能缺省假设、完备的数据库和应用程序生成器。目前市场上流行的4GL(如FOXPRO等)都不同程度地具有上述特征。但4GL目前主要限于事务信息系统的中、小型应用程序的开发。过程开发模型又叫混合模型(HYBRIDMODEL),或元模型(METAMODEL),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。第三节软件开发程序编制标准【讲解要点】软件开发程序编制标准。31为什么要编码规范编码规范为什么是重要的有以下一些理由(1)一份软件80的生命周期是维护期(2)任何软件都很难说它的整个生命周期都是由它的原始作者来维护(3)编码规范改善软件的可读性,使得软件工程师充分理解新的代码变得非常的快速(4)如果要把原码作为产品发布,需要确保他像其它产品一样干净并且封装的好。(5)为了按照规范工作,每个人写软件的时候,都必须遵守编码规范。32HTML语言标准1应用范围本编程规范适用于需要编写HTML代码的网页程序开发人员。2HTML编码规范本节内容为什么要编码规范HTML语言标准C语言标准JAVA语言标准软件开发界面标准预计课时1课时HTML并不是一种编程语言,而是一种标记语言,它没有任何真正的编程语言中的循环或是流程控制语句。然而,HTML代码的格式和风格是非常重要的,因为要经常对HTML代码进行维护和修改,因此HTML代码必须有很清晰的逻辑结构和布局,而使其易懂和易于维护。(1)标记的书写HTML语言是不区分大小写的,但一般来说,标记使用大写书写,如等;标记中的属性一般使用小写,如等。(2)标记的换行规范一般一个HTML代码都会很长很复杂,因此不要把代码写得很密,这样的可读性非常差,HTML对回车和空格都不敏感,因此可以使用回车和空格,使代码的格式和结构更清晰,这样才能易于维护。很多标记一般来说要占用一行,除了同一标记的关闭标记外,最好不出现两个标记在同一行的情况。如TEXT应写成TEXT通常情况下,应该换行的标记有和当段落内容比较长时,也应各占一行。各种列表标记。表格的相关标记和和和通常情况下,需要将开始和关闭标记放在一行的标记有和和和各种标题标记,如等和(1)标记的关闭规范HTML文档的正文都应在标记中间,而标记则应包含在和标记之间,如标记之间,如(2)对于需要关闭标记的标记,如、等标记,都必须有相应的关闭标记出现,否则一方面使程序的可读性差,更重要的是会引起页面格式显示混乱。正确地写法应为,(3)不能出现标记交叉的情况,如标记的属性值规范对于标记中的属性值,最好使用双引号或单引号包围,这样的话不易出错。如本来是希望在文本框中显示“HELLOWORLD”,但是由于没有加上引号,则只会在文本框中显示“HELLO”,因此,正确地写法为标记的缩进规范最高一级的父标记采用左对齐顶格方式书写,下一级标记采用左对齐后,缩进2个空格的方式书写。再下一级则以此类推。同一级标记的首字符上下应对齐。例如注释在任何代码中都应该有做注释的好习惯,在一个复杂的HTML代码中,友好的注释是非常有用的,特别是在有很多嵌套的表格中。HTML中使用来做注释。如33C语言标准1概述制定本编程格式的目的是为了使软件可读性好、兼容性好、易维护等等。2程序的构成C语言程序是由各种说明和定义组成。具体地说,C程序的要素包括(1)包含文件说明INCLUDE;(2)常数定义DEFINE;(3)宏定义DEFINE;(4)类型说明TYPEDEF;(5)外部变量说明EXTERN;(6)外部函数引用说明;(7)内部函数引用说明;(8)函数描述;(9)全局变量定义。下面举例说明各种成分的结构和形式。/INCLUDEFILESINCLUDE/常数定义/ERRORCODE定义/DEFINEERR_FILEIO1/FILEI/OERROR/DEFINEERR_SYS2/SYSTEMSERVICEERROR/DEFINEERR_MALLOC3/MEMORYALLOCATIONERROR/DEFINEERR_PARAMETER4/PARAMETERERROR/STATUSCODE定义DEFINESTS_IDLE1/ID1E/DEFINESTS_READY2/READY/DEFINESTS_RUN3/RUNNING/DEFINESTS_STOP4/STOP/软件开发程序编制标准/宏定义DEFINEADDX,YX十Y/类型定义/TYPEDEFINTEGERLONG;STRUCTABCINTAINTBNTC/外部变量说明/EXTENINTEGERXYZ;/EXTENSHORTABC;/全局变量定义/INTCOMMAND_DATA/外部函数引用说明/EXTERNCHARGETLINE;EXTERNVOIDSOME_FUNC/内部函数引用说明/VOIDMYFUNCLINTMYFUNC2/函数描述/INTMYFUNCARGC,ARGVINTAGRC;CHARARGV3源文件的命名规则及构成(1)文件扩展名XXXXXXXXH用于记载说明、定义的源文件;XXXXXXXXC用于记载函数描述的源文件。(2)文件名文件应当按照它所记载的内容来命名。源文件若只包含一个函数描述,则应当用函数名来命名文件。从可移植性的角度考虑,文件名的长度一般应在8个字符以内。同时,字母的大小写应该是有区别的。(3)源文件的构成关联性很强的函数、变量应集中在同一源文件中描述。源文件中共同的定义和说明应集中在一个头文件中描述;源文件的大小一般应控制在1000行以内。(4)各语句的书写格式及留空规定为了使程序具有良好的可读性,对语句的书写格式及语句前的留空进行了明确的规定。程序的相邻层次的语句之前的留空个数一般为4个空格,但SWITCHCASE语句和函数形参定义语句前只留2个空格。一行的文字数程序的一行的字符个数应在72之内,以便于程序的阅读和输出。SWITCH语句的书写格式SWITCHCHCASETAB/注释/STATEMENTSBREAKDEFAULT/注释/STATEMENTSBREAKIF语句的书写格式IF条件/注释/STATEMENTSELSEIF条件/注释/STATEMENTSELSESTATEMENTSWHILE语句的书写格式WHILE条件/注释/STATEMENTSDO/注释/STATEMENTSFOR语句的书写格式FOR/注释/STATEMENTS函数的书写格式FUNCX,Y,ZINTXSTRUCTAYUNIONAAZREGISTERINTPQ/注释/注释/STATEMENTS(5)函数名和变量名自定义函数名应当与系统函数、标准函数名区分开来,除专用目的的函数外,函数名应当以大写字母开头;常数名(DEFINE)必须大写;全局变量应尽量按它所表示的内容来命名;所有的变量名应一律以小写字母开头。(切忌使用PPP、AAA、II之类的不明意义的单词);变量、函数的命名可参照如下规定前缀类型含义举例前缀类型含义举例ISHORT类型SHORTICOUNTNINT类型INTNCOUNTLLONG类型LONGIDATACOUNT;CCHAR类型CHARCINKEYBBOOL类型BOOLBFLAG;S字符串类型CHARSNAME20;P指针类型CHARPMEMADDR;H句柄类型HGLOBALHGLOBALBLOCKST结构类型PARAMSTRUCTSTMYSTRUCT;A数组类型INTANMYARRAYG全局变量CHARGESYSCOMM;其中,对象的声明中,例子CTREECLASSOTREETREE1(前缀(表明所属类(有含义的对象名(6)条件编译语句的使用DEBUG语句的使用使用PRINTF语句进行调试时,调试语句应写在IFDEFDEBUG和ENDIF之间,这样,只需简单地改变编译命令行参数就可以删除或使用调试语句。与环境有关的部分与操作系统或开发环境有关的部分应当写在条件编译语句之中,这样便于系统的移植。例如在制作可用UNIX和DOS下软件时,依赖于UNIX的部分应写在IFDEFUNIX和ENDIF之间,而依赖于DOS的部分应写在IFDEFMSDOS和ENDIF之间。(7)其他注意事项对OS的系统调用的使用应尽可能集中在一个文件中,这样使系统的错误处理和移植变得容易;错误处理函数应集中放在一个文件中。(8)注释的书写格式及内容文件头的注释/NAME文件名FUNCTION文件功能PROGRAMMEDSU程序员名DATEORG949414PROJECT项目名称OS所使用的操作系统HISTORYIDDATENOTE00940414初期作成0L940514第二版XX机能修改追加/函数头的注释/NAME函数名FUNCTION函数功能PROCESS处理大致过程INPUT输入参数及含义EXTERN使用的全局变量及含义UPDATE修改的全局变量RETURN返回值及含义PROGRAMMEDSU/程序员名DATEORG940414CALL自定义函数列表SYSTEM系统调用函数列表/函数体的注释TESTARGC,ARGVINTARGC/CHARARGV/INTI/FORI0IGRGCI/IFSTRCMPARGVI,”DISPLAY”/STATEMENTS/INITIAL_SOMETHING/(9)严格控制宏定义和全程变量的使用。全程变量的使用管理由专门人员负责。(10)文件的变更格式文件提交以后,文件的内容的变动须按以下格式进行。在文件头的注释中进行登记/HISTORYIDDATENOTE00941111初期作成01941212修改内容102941220修改内容203941231修改内容3/段落删除/DELETEDBYXY941220/IF0所需删除的段落ENDIF段落增加/ADDBYXY941231/IF1所需增加的段落ENDIF段落修改/MODIFIEDBYXY95220/IF0修改前的段落ELSE修改后的段落ENDIF34JAVA语言标准1文件名这一节列出了所用的大部分文件名和后缀。(1)文件后缀JAVAJAVA源文件后缀CLASSJAVA字节码文件后缀(2)常用的文件名,经常使用的文件名包括以下GNUMAKEFILE首选的MAKEFILE的名字,使用GNUMAKE来BUILD的软件。README那些专门概述特定文件夹内容的文件的首选的名字2文件的组织一个文件的各个部分之间应该用空行隔开,并且应该用一个可选的注解来标示每个不同的部分。文件超过2000行,是非常笨重的,应该避免。(1)JAVA源码文件每一个JAVA源码文件都包括一个唯一的PUBLIC类或INTERFACE。当私有的类和INTERFACE都和这个PUBLIC类有关联时,可以把它们放到这个PUBLIC类的源文件中。这个PUBLIC类或INTERFACE应当是这个文件的第一个类或INTERFACE。(2)JAVA源文件有以下的顺序文件开头注解声明PACKAGE的语句和载入语句。(3)开头注解所有的源文件都应该以一个C语言风格的注解开头。这个注解应该列出类名,版本信息,日期和版权声明/CLASSNAMEVERSIONINFORMATIONDATECOPYRIGHTNOTICE/(4)声明包的语句和IMPORT语句绝大多数JAVA源文件中的第一非注释行应该是声明包的语句。此后,紧接着是IMPORT语句。例如PACKAGEJAVAAWTIMPORTJAVAAWTPEERCANVASPEER(5)类和接口的声明下面的表格2描述了部分的类和接口的声明,他们应该按照表格的顺序。表2部分类/接口声明注释类/接口文档注解/类或接口声明类/接口实现的注解(/。/),如果有必要的话这个注解应该包括任何整个类或接口范围内的不适合在类/接口文档注解中出现的内容。类(静态)变量首先是PUBLIC类变量,然后是PROTECTED类变量,然后是FRIENDLY(PACKAGELEVEL,即默认)。然后是PRIVATE变量。INSTANCEVARIABLES(译注实体变量不会翻译了,意即普通的变量。)首先是PUBLIC,其次PROTECTED,接着PACKAGELEVEL。最后是PRIVATE变量。类的构造函数方法,(译注即类的成员函数)这些方法应该以功能相近为标准,组织在一块,而不是看其作用域和可存取性。例如一个PRIVATECLASS方法(译注意即PRIVATESTATICMETHOD)可以被放在两个PUBLICINSTANCE方法(译注意即PUBLICMETHOD)中间。其目的是为了代码可读性和可理解性增加。(6)缩进应该以四个空格为缩进的最小单位,缩进的精确结构没有被详细定义。TABS必须被精确指定为8个空格(而不是4个);代码行的长度应避免行的长度超过80个字符,因为很多的终端和工具都不支持超过80个字符。注意文档中的例子的行长度应该更短,一般不超过70个字符。断行的方法当一个表达式不适合一个单行时,依照以下这些一般性的原理来断行在逗号后断行;在运算操作符前断行;在较高的层次断行比在低层次断行要好;把新行的表达式的开头和上一行的表达式开头对齐。如果上一条规则导致代码的混乱或者代码超出了正常的限度。那么就仅仅以缩进8个空格来替代。断行例子SOMEMETHODLONGEXPRESSION1,LONGEXPRESSION2,LONGEXPRESSION3,LONGEXPRESSION4,LONGEXPRESSION5VARSOMEMETHOD1LONGEXPRESSION1,SOMEMETHOD2LONGEXPRESSION2,LONGEXPRESSION3下面是两个算术表达式的断行的例子,第一个比第二个好,因为它的断行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代理记账服务合同样本
- 2024山地林权承包合同范本
- 工程质量责任合同范本阅读
- 常见劳务协议书样本
- 2024年度品牌授权合同标的及相关服务说明
- 海洋货品运输合同范本
- 2024个人机动车买卖合同模板
- 房屋买卖违约赔偿协议
- 2024合同交底的具体步骤合同交底范本条文2
- 基础版员工劳动合同书样本
- 托福词汇10000电子讲义
- 关于意识形态工作责任清单意识形态工作责任清单及风险点台账
- 建筑学专业知识考试参考题库(300题)
- 高级烟叶制丝操作工理论考试复习题库大全-1单选题汇总
- 【超星尔雅学习通】大国崛起:中国对外贸易概论网课章节答案
- DB32/T 4465-2023专利侵权纠纷行政裁决庭审规范
- DDI-高绩效辅导培训课件
- 外研版七年级上册英语思维导图各个单元的内容
- 基础护理生命体征测量
- 小升初个人简历模板-
- 糕点生产许可证审查细则
评论
0/150
提交评论