组织与策略问题_第1页
组织与策略问题_第2页
组织与策略问题_第3页
组织与策略问题_第4页
组织与策略问题_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编程规范—第一讲

组织与策略问题软件工程系本小节主要阐述的是程序编程开发的基本问题,这些问题大多与代码本身并没有直接关系,它们讨论的是编写规范代码所必须的工具与技术。不要拘泥于小节在高警告级别处干净利落地进行编译使用自动构建系统使用版本控制系统做代码审查1.不要拘泥小节不要强制施加个人喜好或者过时的做法应该在每个源文件乃至每个项目中都使用一致的编程格式不要规定缩进多少,应该规定要用缩进来体现代码的结构;不要强制行的具体长度,应该保证代码行的长度有利于阅读;不要在命名方面规定过多,应该规定的是使用一致的命名规范;不要规定注释风格,应该编写有用的注释。W文件结构

文件每个C++程序通常可以分为两个文件:一个文件用于保存程序的声明,称为头文件(“.h”);一个文件用于保存程序的实现,称为定义文件(“.cpp”).W文件结构

文件头文件由三部分组成头文件开头出的版权和版本声明;预处理块;函数和类结构声明等。为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块头文件(graphics.h)中只存放“声明”而不存放“定义”。W文件结构

文件定义文件由三部分组成定义文件开头出的版权和版本声明对一些头文件的定义程序的实现体假设定义文件的名称为graphics.cpp。程序版式

文件空行:在每个类声明之后,每个函数定义结束后都要加空行。每行代码只做一件事,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便注释。If、for、while、do等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}。尽可能在定义变量的同时初始化该变量。Intsum=0;修饰符的位置应该紧靠变量:int*x,y;命名规则

文件命名两个基本原则:含义清晰,不易混淆;不和其他模块、系统API的命名空间相冲突即可。标识符应当直观且可以拼读,最好采用英文单词或其组合,便于记忆和阅读。不要用汉语拼音。标识符长度应当符合“min-length&&max-information”命名规则

文件命名规则尽量与所采用的操作系统或开发工具的风格保持一致。Windows应用程序通常采用大小写混排(AddChild)。Unix应用程序标识符次用小写加下划线(add_child)程序中不要出现仅靠大小写区分的相似标识符。IntX,x;voidfoo(intx);voidFOO(floatx);局部变量与全局变量不要完全相同。尽管作用域不同也很容易出现语法错误。变量名尽量使用“名词”或者“形容词+名词”;全局函数名字应当使用“动词”或“动词+名词”,类中的成员函数可以只用“动词”;Floatvalue;Floatoldvalue;DrawBox();box->Draw();命名规则

文件Windows应用程序命名规则:类名和函数名用大写字母开头的单词组合而成ClassNode;ClassleafNode;//类名VoidDraw(void);voidSetValue(intvalue);//函数名变量和参数用小写字母开头的单词组合而成。BOOLflag;intdrawMode;常量全用大写字母、用下划线分割单词。ConstintMAX=100;ConstintMAX-LENGTH=100;静态变量加前缀s_(表示static)注释

文件注释常用于版本、版权声明;函数借口说明;重要的代码行或段落提示。注释是对代码的提示,不宜太多,如果代码本身清楚,则不必注释。边写代码边注释,修改代码同时修改注释,保持注释与代码的一致。注释中避免出现缩写,位置与被描述代码相邻,可以放在代码上方或右方,不可放在下方。当代码过长,特别出现多重嵌套时,应当在一些段略的结束处加注释,便于阅读。第1条:在高警告级别干净利落地进行编译高度重视警告:使用编译器的最高警告级别。理解所有警告通过修改代码而不是降低警告级别来排除警告编译器对某个构造发出警告,一般表明代码中存在潜在问题。成功的构建应该是无声无息的,没有警告。排除警告的正确做法就是:把它弄清楚,然后改写代码以排除警告,并使代码阅读者和编译器都能更加清楚,代码是按编写者的意图执行的。2.在高警告级别干净利落地进行编译未使用参数:不提供该参数名称即可未使用的变量:插入一个该变量的表达式即可。这算是一个惯用法了,会比较多的用到。变量未初始化:初始化。需要通过一个过程来初始化的例外,即形如:obj;init_obj(obj);某些分支没有return返回值。在这些分支上加入断言:assert(false);再接一个return返回值。有、无符号不匹配。如果无法避免,预先写好强制转换。个人认为,尽量避免无符号数,即使是处理理论上就没有符号的数据,有符号数适应性更好。几乎没有必要使用无符号数---除了某些位操作。3.使用自动构建系统相比其它语言,C/C++的编译过程比较复杂,依赖具体的编译器、操作系统、硬件环境,所以一直以来缺乏一个简单易用、跨平台、支持多种编译器的通用构建工具。传统的C++构建系统有:SconsWaf、Jam/Boost.Jam、Cmakecmake的特点主要有:开放源代码、跨平台、能够管理大型项目、简化编译构建过程和编译过程、高效率、可扩展功能等常用:自动构建系统FlexBuild:每天构建某个工程,可方便部署为每日构建、每夜构建、自动构建系统。使用完全自动化的构建系统,无需用户干预即可构建整个项目单操作的构建过程能将源文件可靠和可重复地转换为可以交付的软件包。3.使用自动构建系统FlexBuild是跨平台的C/C++项目构建工具(Daily-Build)-能每天定时执行指令构建整个产品树,并生成结果报表。一键编译所有的工程支持VsiualC++6.0/2003/2005/2008/2010、MinGW/GCC、以及Intel编译器的支持支持Windows下所有类型程序的开发版本自动递增各个项目源码行数以及编译时间统计详细的编译结果输出方便定制每个项目编译前和编译后要执行的操作丰富的辅助开发工具4.使用版本控制系统简单点说,你在开发过程中,会不断发现新需求,不断发现bug,如果不做控制,你的软件将永远不会发布,或今天一个版本,明天又是一个版本。版本控制系统:VersionControlSystem功能:版本记录和恢复、共享数据、追踪修改信息和责任人。核心概念:版本库4.使用版本控制系统常见版本控制系统:VisualSourceSafe(简称VSS)VSS是配置管理的一种很好的入门级的工具。VSS采用标准的windows操作界面,安装和配置非常简单,VSS的配置管理的功能比较基本,提供文件的版本跟踪功能。VSS提供share(共享)、branch(分支)和合并(merge)的功能,对于团队的开发进行支持。VSS只能在windows平台上运行,不能运行在其他操作系统上,微软不再对VSS提供技术支持。4.使用版本控制系统ConcurrentVersionSystem(简称CVS)CVS是开发源代码的配置管理工具,其源代码和安装文件都可以免费下载。CVS是源于unix的版本控制工具,对于CVS的安装和使用最好对unix的系统有所了解能更容易学习,CVS的服务器管理需要进行各种命令行操作。CVS是开发源码软件,没有生产厂家为其提供技术的支持。如发现问题,通常只能靠自己查找网上的资料进行解决。4.使用版本控制系统SubVersion(简称SVN)SVN是一个开放源代码的版本控制系统采用分支管理系统。版本号递增,逻辑明确,符合大众思维习惯。版本库集中式管理、版本信息不易透漏。唯一的版本库,代码一致性非常高。SubVersion:实现服务系统的软件。TortoiseSVN:是SVN客户端程序,为windows外壳程序集成到windows资源管理器和文件管理系统的Subversion客户端。5.做代码审查什么是代码审查?代码评审也称代码复查,是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。在测试中又称为静态分析,包括:代码走查、代码审查、技术评审。往往需要借助白盒测试工具来自动检测。代码审查负责解决的问题:编码规范问题:命名不规范代码结构问题:重复代码、巨大的方法和类、分层不当、紧耦合工具、框架使用不当:Spring、Hibernate、AJAX5.做代码审查实现问题:错误验证、异常处理、事务划分、线程、性能、安全、实现过于复杂、代码可读性不佳、扩展性不好测试问题:测试覆盖度不够、可测试性不好代码评审不负责检查功能、逻辑是否正确,这些要靠单元测试和QA工作来解决好处:提高代码质量在项目的早期发现缺陷,将损失降至最低评审的过程也是重新梳理思路的过程,双方都加深了对系统的理解促进团队沟通、促进知识共享、共同提高5.做代码审查怎么做代码审查?交叉评审——代码走查:团队成员互相检查代码参与者可以是任意两个组员,或开发组长分别与每个组员结对进行时机可以选择在下班前半小时,对当天改动的模块进行评审代码作者讲解如何以及为何这样实现、评审者提出问题和建议每次解决的问题要记录到SVN注释5.做代码审查会审:以项目为单位,召开专门的代码评审会议参与者:包括项目组全体成员及其它组的开发组长时机选择:开发进行到某一阶段时,对共性问题进行总结,对好的做法进行提炼和推广会前准备工作:组织者应通知各参与者本次评审的范围参与者阅读源代码,列出发现的问题、亮点,汇总给组织者准备工作要细致,需要给出问题详细描述以及相关代码在SVN上的URL地址等评审代码的选择:最近一次迭代开发的代码系统关键模块业务较复杂的模块缺陷率较高的模块5.做代码审查会审:以项目为单位,召开专门的代码评审会议会议议程:如果是第一次会议,先由该项目开发组长做整体介绍参加者依次发言,结合代码讲解发现的问题每讲完一个问题,针对其展开讨论,每个问题控制在10分钟以内如果问题不多,还可以安排该组成员对最近开发的代码进行地毯式的讲解和排查;或者针对某个方面对整个项目做评审,例如性能、安全性或测试会后总结:把会上提出的所有问题、亮点及最终结论详细的记录下来,供其他团队借鉴未能讨论清楚的问题,会后解决5.做代码审查提供评审案例:用评审前的代码与评审后优化的代码做对比问题跟踪:对评审中发现的问题代码应加以跟踪,确保问题得以解决,防止复发评审到什么程度:进行全面的代码评审成本较高,也没有必要对发现的问题要本着集体代码所有制的观点和就事论事的原则,因此建议把代码质量与团队绩效(而不是个人绩效)挂钩总结要拘泥于小节在高警告级别处干净利落地进行编译使用自动构建系统使用版本控制系统做代码审查目标掌握文件结构、命名规则理解自动构建系统和版本控制系统理解代码审查的作用与做法C++知识回顾三个问题:1、C++程序由哪些组成部分2、C++与C的区别3、区别面向对象与面向过程C++程序组成#include<iostream>

//包含头文件iostream编译指示usingnamespacestd;//使用命名空间std声明intmain()//函数{cout<<“HelloXiaoming!\n”;//可执行语句return0;//函数返回值

}1、程序组成包括编译指示、声明语句、可执行语句、函数、赋值运算语句、复合语句、控制语句、注释等等;2、C++函数定义必须包含返回类型、函数名称、形参表格和函数体。返回值类型默认为int类型;C与C++C++对C的扩充主要表现在面向对象和泛型编程两部分,并对C语言的基础语法进行了完善与添加。C++继承了C面向过程的特点,同时又是面向对象的编程,类是它的主要特点,在程序执行过程中,先由main函数进入,定义一些类,根据需要执行类的成员函数,过程概念被淡化了(主函数语句还是面向过程),以类驱动程序运行,类抽象化对象,即为面向对象程序设计。具有抽象性、封装性、继承性及多态性等。面向对象程序设计的特点:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论