<b>C++箴言:从模板中别离出参数无关的代码</b>[VC/C++编程]
本文“<b>C++箴言:从模板中别离出参数无关的代码</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
templates(模板)是节俭时间和避免代码反复的极好办法.没必要再输入20个类似的 classes,每一个包含 15 个 member functions(成员函数),你可以输入一个 class template(类模板),并让编译器实例化出你需求的 20 个 specific classes(特定类)和 300 个函数.(class template(类模板)的 member functions(成员函数)只有被利用时才会被隐式实例化,所以只有在每一个函数都被实际利用时,你才会得到全部 300 个member functions(成员函数).)function templates(函数模板)也有类似的魅力.没必要再写很多函数,你可以写一个 function templates(函数模板)并让编译器做别的的事.这不是很重要的技术吗?
是的,不错……有时.假如你不当心,利用 templates(模板)大概招致 code bloat(代码膨胀):反复的(或几近反复的)的代码,数据,或二者都有的二进制码.后果会使源代码看上去紧凑而整洁,但是目标代码臃肿而疏松.臃肿而疏松很少会成为时髦,所以你需求理解若何避免这样的二进制扩大.
你的主要工具有一个有气势的名字 commonality and variability analysis(通用性与可变性解析),但是关于这个设法并没有什么有气势的东西.即便在你的职业生涯中历来没有利用过模板,你也应当从始至终做这样的解析.
当你写一个函数,并且你意识到这个函数的实现的某些部份和另一个函数的实现本质上是相同的,你会仅仅复制代码吗?当然不.你从这两个函数中别离出通用的代码,放到第三个函数中,并让那两个函数来调用这个新的函数.也就是说,你解析那两个函数以找出那些通用和改变的构件,你把通用的构件移入一个新的函数,并把改变的构件保存在原函数中.近似地,假如你写一个 class,并且你意识到这个 class 的某些构件和另一个 class 的构件是相同的,你不要复制那些通用构件.作为替换,你把通用构件移入一个新的 class 中,然后你利用 inheritance(担当)或 composition(复合)使得本来的 classes 可以拜候这些通用特点.本来的 classes 中差别的构件——改变的构件——仍保存在它们本来的位置.
以上是“<b>C++箴言:从模板中别离出参数无关的代码</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |