• 网络学院
  • 新手学堂
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
C/C++作用域引申出的编码规范
广告位
  站点:
  • 首 页
  • 最新软件
  • 最新文章
  • 国内软件
  • 国外软件
  • 汉化软件
  • 源码下载
  • 字体下载
C/C++作用域引申出的编码规范
软件发布 C/C++作用域引申出的编码规范
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回首页 | 文章首页 | 编程技术 | C/C++教程 | C/C++作用域引申出的编码规范

C/C++作用域引申出的编码规范

 

添加时间: 2006-2-27 0:56:53  作者: C++教程  阅读次数:1244   来源: http:\\d9soft.com

 

 

        规范本身应该是一个规定,但C/C++在编码上并没有这样的规定,凡符合C/C++语法的就是合格的代码,但符合C/C++语法的代码不一定是优秀的代码,要对一些不良行为做约定,比如不应该将局部使用的变量作为全局变量,这是其一;其二,代码本身也可能会进行合作开发或后期维护

  ,那么一个表达统一结构清晰的代码是必要的。由这两点产生了编码规范,所以编码规范就是公司或团体对代码编写的一个规定和约定。

  对于第二点而言,虽然其存在的价值是必须的,但是适用场合都有所不同性,且众口难调,缺乏非此不可的科学依据。比如大家熟悉的匈牙利命名法,其在变量名称中包含了类型信息,其优点不言而喻,在代码实现过程中非常方便,但缺点也有不少,比如变量本身就具有类型,而名称中再次包含了类型信息,这是严重的冗余,修改变量类型就必须修改变量名称,更主要的是没有办法保证它们的一致性,总之名称应该是对功能的描述,而不应该含有类型信息。所以即使强如匈牙利命名法,在M$的编码规范中也不将再存在。因为第二点不能放之四海而皆准,所以我将在这篇短文中讲述第一点,有科学依据则易于为人接受,但我还是要强调一下,这第一点只是编码规范存在理由的一部分,而不是全部,第二个理由也非常重要,其引申出来的规范不可缺少。

  要想写出优秀的C/C++代码有很多注意点,不是一个小短文可以描述清楚的,我这里仅仅讲述变量的作用域和生存期,根据这些规则产生的编码规范会和你曾经见到过的一些编码规范有所抵触,这不足为奇,比如很多编码规范规定了函数体的最大行数,过多的行数大部分情况下是因为功能结构化分不清,不利于阅读,但却不一定如此,如果在这个规定和规定这个规定的目的之间产生了抵触,那么这时就应该舍弃这个规定,所以我认为称它编码建议胜于称它编码规范。

  对于编码规范含义的讲解至此结束,话入正题,对于一个面向过程的语言而言,函数过程是其基本单位,函数是一个功能完整的实现过程,面向对象也如此,只是类代替了函数过程的部分地位。

  为什么要将一个过程独立成一个函数?这是因为此过程功能完整明确,在独立成一个函数之后其还具备了复用的能力。

  为什么不将一个过程独立成一个函数?这是因为此过程与其他部分耦合度太高,没有明确的功能含义,即使独立出来,也不存在可复用的场合。

  作用域就是起作用的范围,一个应该在多处起作用的对象,不应该局限于一个小空间中,反之亦然。这里可以使用的有函数、对象、名字空间等,假如以上皆不符合,那么就应该使用为部分人所忽视的“”。

  以下就是一个对变量/过程的作用域和生存期的演示:

  在很多地方都可能会用到的函数或类型();

  一个功能函数或类型() 仅在此函数或类型中用到且多次用到的子函数或子类型()//C++没有子函数这一说法,可以使用函数对象(仿函数)替代;

  在接下来的部分也需要用到的变量; //注意这个分号 仅在这个中用到的临时变量; 仅在此函数或类型中用到且只用到一次的功能段

  函数或类型其他部分;;

  这样就将变量和过程局限在它们应有的空间中,避免了变量和过程对以后的变量和过程的污染,尤其在代码量很大的程序中,而且因为有了区分不同的功能代码,使得程序可读性增强。当然一切还是了可读性,看以下这个情况:

  某个功能代码的第一行;

  某个功能代码的第二行;

  某个功能代码的第三行;

  只为此功能实现一次的,由与此功能无逻辑关系的代码第一行;

  第二行;

  …… ;

  第 n行;

  某个功能代码的第四行;

  某个功能代码的第五行;

  某个功能代码的第六行;

  这样实现也许逻辑清晰,但在代码编辑器中需要非常麻烦的上下翻页才能看到连续的功能代码,而且中的代码太长,像个丑陋的补丁,这时候将中的代码移到一个独立子函数中比较适合,就变成了

  某个功能代码的第三行;

  call子函数( 参数s ); // 上下的可以不要

  某个功能代码的第四行;

  当然前面也提到过如果这个子函数和这个功能代码段的耦合性太强的话,就需要传递很多的参数,这没有什么好的方法,因为这毕竟是为了可读性而作出的妥协。

  局部类(比如定义在函数内部的类)有一些令人不快的功能限制,比如没办法作为模板参数,我还不知道在c++中为什么有这样的限制,但这一点确实确实令人不快。

 

 

 

上下文章:

 

上一篇文章: 程序宝典:C++学习感想 下一篇文章:

相关文章:

  • 应遵循的PL/SQL编码规
  • 湖南严格规范信息技术教育培训和考试认证制度
  • 《C++编程规范》笔记(设计风格)
  • 【软考】数据库的规范化的讨论
  • 微软即将停发ATC证书 IT认证亟待重新规范(1)

相关软件:

  • 86五笔编码速查软件 V1.09
  • 98五笔编码速查软件 V1.09
  • 汉字Unicode编码转换器 V0.1
  • 中文规范输入法 2007 V7.0 标准版
  • 网站项目管理规范指南(CHM)
  • PHP编码规范(第一版)(CHM)

 

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • C/C++作用域引申出的编码规范
  • 程序宝典:C++学习感想
  • C语言:黑客学员必修课(一)
  • C语言:黑客学员必修课(二)
  • 使用多线程实现数据实时采集
  • C++编程中的四个调试小技巧
  • C语言程序设计基础之联合
  • 学C++不得不看的一篇文章
  • C,曾经的程序员梦
  • 水滴石穿C语言之可变参数问题

C/C++教程阅读排行

  • 学C++不得不看的一篇文章
  • C语言:黑客学员必修课(一)
  • 水滴石穿C语言之可变参数问题
  • 程序宝典:C++学习感想
  • 我的Visual C++入门之路
  • 初学者学习C++的50条忠告
  • C++中的struct专题研究
  • C++箴言:只要可能就用const
  • 强大的语言——C入门
  • C++编程中的四个调试小技巧

编程技术阅读总排行

  • VB入门教程之一
  • 第二章 PowerBuilder 入门之创建新...
  • Java连接数据库实例
  • 第一章 什么是PowerBuilder
  • VC++之List Box/Check List Box控...
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有