手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

在未来时态下研发C 程式

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
 数据结构学习讲座(C 版)

  好的软件能够适应变化。他提供新的特性,适应到新的平台,满足新的需求,处理新的输入。

  新的函数将被加入到函数库中,新的重载将发生,于是要注意那些含糊的函数调用行为的结果;新的类将会加入继承层次,现在的派生类将会是以后的基类,并已为此作好准备;将会编制新的应用软件,函数将在新的运行环境下被调用,他们应该被写得在新平台上运行正确;程式的维护人员通常不是原来编写他们的人,因此应该被设计得易于被别人理解、维护和扩充。

  这么做的一种方法是:用C 语言自己来表达设计上的约束条件,而不是用注释或文档。例如,假如一个类被设计得不会被继承,不要只是在其头文档中加个注释,用C 的方法来阻止继承。

  假如一个类需要其实例全部创建在堆中,不要只是对用户说了这么一句,用以前介绍过的方法来强迫这一点。

  假如拷贝构造和赋值对一个类是没有意义的,通过申明他们为私有来阻止这些操作。

  应该判断一个函数的含意,连同他被派生类重定义的话是否有意义。假如是有意义的,申明他为虚,即使没有人立即重定义他。假如不是的话,申明他为非虚,并且不要在以后为了便于某人而更改;确保更改是对整个类的运行环境和类所表示的抽象是有意义的。

  处理每个类的赋值和拷贝构造函数,即使“从没人这样做过”。他们现在没有这么做并不意味着他们以后不这么做。假如这些函数是难以实现的,那么申明他们为私有。这样,不会有人误调编译器提供的默认版本而做错事(这在默认赋值和拷贝构造函数上经常发生)。

  基于最小惊讶法则:努力提供这样的类,他们的操作和函数有自然的语法和直观的语义。和内建数据类型的行为保持一致:拿不定主意时,仿照int来做。

  要承认:只要是能被人做的,就有人这么做(WQ:莫菲法则)。他们会抛异常;会用自己给自己赋值;在没有赋初值前就使用对象;给对象赋了值而没有使用;会赋过大的值、过小的值或空值。一般而言,只要能编译通过,就有人会这么做。所以,要使得自己的类易于被正确使用而难以误用。要承认用户可能犯错误,所以要将您的类设计得能够防止、检测或修正这些错误。

  努力于可移植的代码。写可移植的代码并不比不可移植的代码难太多,只有在性能极其重要时采用不可移植的结构才是可取的。即使是为特定的硬件设计的程式也经常被移植,因为这些平台在几年内就会有一个数量级的性能提升。可移植的代码使得您在更换平台是比较容易,扩大您的用户基础,吹嘘支持开放平台。这也使得您赌错了操作系统时比较容易补救。 将您的代码设计得当需要变化时,影响是局部的。尽可能地封装;将实现细节申明为私有。只要可能,使用无名的命名空间和文档内的静态对象或函数。避免导致虚基类的设计,因为这种类需要每个派生类都直接初始化他--即使是那些间接派生类。避免需要RTTI的设计,他需要if...then...else型的瀑布结构。每次,类的继承层次变了,每组if...then...else语句都需要更新,假如您忘掉了一个,您不会从编译器得到任何告警。

  未来时态的考虑只是简单地增加了一些额外约束:

  ·提供完备的类,即使某些部分现在还没有被使用。假如有了新的需求,您不用回过头去改他们。

  ·将您的接口设计得便于常见操作并防止常见错误。使得类容易正确使用而不易用错。例如,阻止拷贝构造和赋值操作,假如他们对这个类没有意义的话。防止部分赋值。

  ·假如没有限制您不能通用化您的代码,那么通用化他。例如,假如在写树的遍历算法,考虑将他通用得能够处理任何有向不循环图。

  未来时态的考虑增加了您的代码的可重用性、可维护性、健壮性,已及在环境发生改变时易于修改。他必须和进行时态的约束条件进行取舍。太多的程式员们只关注于现在的需要,然而这么做牺牲了其软件的长期生存能力。是和众不同的,是离经叛道的,在未来时态下研发程式。




文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS