STL程序设计实践四:简化输入和提高可维护性

原创 2001年11月10日 18:36:00

 

STL程序设计实践四:简化输入和提高可维护性

    STL存在于C++标准库的std空间中,当你使用std空间中的类型时必须在前面加上std::,否则必须在程序中加入如下语句:

using namespace std;

   把std引入到全局空间,这样就不用输入std::了,方便了我们输入。但当你要需要使用STL中的容器声名一个某种类型的对象时,如:

vector<string> vectstr;

声名一个常量迭代子时:

vector<string>::const_iterator cvectstr_it;

你要输入一堆很长的字符,尤其是在使用次数较频繁的情况下。为了减少输入你应声名一个替代类型。如:

typedef vector<string> VECT_STR;

typedef vector<string>::const_iterator CVECT_STR_IT;

这样你声名对象时就可大大的减少输入,又可使代码简洁明了。

VECT_STR vstrobj;

CVECT_STR_IT cvstr_it;

声名替代类型不仅可以减少重复输入,简洁代码。最重要的是可以提高代码的可维护性,就像在tcp/ip编程中定义一个如下的包大小宏:

#define PACKSIZE sizeof(struct _tagSpecPack);

当定义了这样一个宏后,无论在什么地方,当需要使用包大小参数时传入PACKSIZE宏。这带来的好处大家应该都知道,无论以后你的消息结构如何修改,增加或减少,你的程序都无需作任何的修改即可编译使用,因为PACKSIZE宏总是能够正确的传入包大小信息。用typedef声名替代类型有异曲同工之效。不信让我们来看看。

   好的程序员都会最大限度的使用库,高密度的使用库,为我们带来了极大的方便,避免了重复劳动,节约了时间。尤其是STL的出现,很多程序员都会写出如下类似的代码:

class custom

{

   vector<T> m_vset;

   vector<T>::iterator m_it;

public:

   vector<T> getdata(){return m_vset;}

   ……

};

   这个实现不存在什么大的问题(请不要说getdata函数该不该这么写,或有没有必要,只是举例,只是说明在custom 类中极有可能第三次出现vector<T>,甚至更多。),但是其可维护性就比较差。假如由于某种原因,custom 类中要更换容器类型(可能是为了使用某种算法,如lower_bound)。这时你不得不去检查整个类及成员函数实现,一个一个的去替换那该死的vector<T>(该死的Ctrl+C, Ctrl+V)。为此被人骂愚蠢太不值了。

   让我们看看STL中typedef应用的广泛程度,相信比我说这么多更具有说服力。

template<class T>
    class allocator {
    typedef size_t size_type;
    typedef ptrdiff_t difference_type;
    typedef T *pointer;
    typedef const T *const_pointer;
    typedef T& reference;
    typedef const T& const_reference;
    typedef T value_type;

    ……

好了先说到这吧,希望对大家有帮助。本文仅供参考。文章写的仓促,有错别字或错误请大家来信指出 ccplusplus@21cn.com,先谢谢大家。欢迎和大家交流,共同进步。(--袁小凯--)

 

如果那们朋友有更多的STL知识,望指教,在下感激不尽。

如何提高代码可读性、可维护性

高质量代码的三大要素: 可读性、可维护性和可变更性 做好代码规范、提高代码质量,能显著增强代码的可读性、可维护性和可变更性。努力提高代码的读写可维护性,是做好代码规范的必要非充分条件。代码规范和架...
  • zm1_1zm
  • zm1_1zm
  • 2016年07月21日 16:05
  • 3054

提高程序的可读性以及可维护性

对于简单的一个for循环,如: for(int i =1; i { //proceeding } 从语法上来讲,上述语句完全没有问题。但是可读性及可扩展性差,为什么呢? 因为使用了100这...
  • GeniusSnail
  • GeniusSnail
  • 2012年04月14日 12:54
  • 1375

保持应用系统可维护性的八个实际措施

应用系统的可维护性: 整体组织;逻辑分割;细粒度措施;技术决策; 一致处理;有效隔离;消除重复; 对维护敏感...
  • shuqin1984
  • shuqin1984
  • 2013年09月03日 18:00
  • 3761

程序的可维护性和可扩展性

可维护性是指当需要修改程序的某个模块时,对其他模块的影响和修改的代价;可扩展性是指当需要为程序添加新的功能时,对其他模块的影响和添加的代价,可以从下面几个方面提高程序的可维护性和可扩展性   代码...
  • dongye2016
  • dongye2016
  • 2017年08月27日 02:13
  • 668

孟岩谈《C++程序设计原理与实践》

十年以来,Bjarne Stroustrup在不同的场合多次表示过,C++最大的弱点就是它的教学,因此,他许诺要亲自写一本教授C++的书——不同于The C++ Programming Languag...
  • hzbooks
  • hzbooks
  • 2010年07月26日 19:36
  • 22586

《java与模式》笔记(一) 软件的可维护性和可复用性

ξ 3.1 软件系统的可维护性☆ 导致一个软件设计的可维护性较低,也就是说会随着性能要求的变化二“腐烂”的真正原因有四个: ① 过于僵硬 加入一个新性能,不仅仅意味着建造一个独立的模块,而且因为这个新...
  • plusir
  • plusir
  • 2006年08月05日 12:27
  • 1235

谈谈软件的可维护性问题

前言       很多包括自己在内的开发人员都会经常去借用(我们不用剽窃这个词了!呵呵)开源代码进行二次开发;或者在前辈的遗留代码下,继续修修补补。这种经历往往并不像看起来那么简单——有时看懂,进而修...
  • kanghua
  • kanghua
  • 2008年12月30日 17:08
  • 15855

《C++程序设计原理与实践》部分习题答案 1

首先要声明,本人也是刚刚开始自学C++,用的书就是这本《C++程序设计原理与实践》,课后习题 都是自学完本章之后选做的。编程能力渣得拿不出手,如果有错误还请不吝赐教~另外,本人的时间管理有比较大的问题...
  • sinat_23857245
  • sinat_23857245
  • 2014年12月13日 19:26
  • 1364

《程序设计实践》【PDF】下载

《程序设计实践》【PDF】下载链接: https://u253469.ctfile.com/fs/253469-231196319     内容简介     本书从排错、测试、性能、可移植性、设计...
  • zhiyong499
  • zhiyong499
  • 2017年12月21日 11:16
  • 139

软件工程-软件的可维护性

本文参考自张海藩老师和牟永敏的《软件工程导论》 软件可维护性的定义: 维护人员理解、改正、改动或改进这个软件的难易程度。 决定软件可维护性的因素: 可理解性: 定义:表现为外来读者理解软件的...
  • time_hunter
  • time_hunter
  • 2013年12月17日 22:00
  • 749
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STL程序设计实践四:简化输入和提高可维护性
举报原因:
原因补充:

(最多只允许输入30个字)