2012年5月20日星期日

Story about C++ template



“模板”故事

     -- Story  about C++ template 201205 

# 故事背景

(故事)
好像我得先稍微抱怨吐槽几句才过把瘾,然后好继续谈谈我的C++ template故事。
诶,抱怨的不是C++语法喔,而是关于同事们对我的template观念的偏见,或曰误解。


某某同事们(包括现在的Leader :-) )‘抱怨’说,
“不喜欢,阿杜写的那坨坨模板代码。”
跟新人们,告诫的语气(哈哈)说,“不要学习阿杜那样用C++模板写代码。”
“代码,着实看起来比较牛B,但后来者需付出代价较大,尤其对于新手。”
……
当然,也有略微听闻到同事的一点赞声。嘿嘿 :-) :-)

所以,为表示‘无辜’,我想在此整理整理,关于C++ template的想法。

# 故事历程
     
边讲故事边总结吧 ……

其实,我对于模板的东西还是比较谨慎的,真的比较需要时才考虑使用。
他们好像不太理解(误解)我。要不然,就让我回忆回忆,梳理一番吧。

在XL快两年的项目开发中,主要使用到C++模板场景可罗列如下:
1. 实现繁多同类的网络通信协议,其中富有共性;
2. 实现字符流类型,针对协议不同字段编解码的字符流;
3. 实现可扩展置换(源码级)的调度策略(部分)。

(去年故事)
去年某月某日,项目组里讨论决定开发写代码时慎用C++模板,包括(禁用)C++异常等。
项目组Leader对于C++ template相对比较规避,他不喜欢。他相信,C++面向对象足以完成其所需了,足矣!
还有,组里其他几位主程对于C++ template不感冒,涉及不多。所以,我们就达成一致,慎用C++模板。

其实其实,我是中立者,那时候我已经很客观了!对于C++ template的利弊已心中有数,可用可不用,除非要用就用得恰处。
……

(更久以前的故事)
以前,我确实迷恋过C++ template,那是2009前还在大学时候,学习《STL源码剖析》《C++设计新思维》(Modern C++ Design)《C++ Templates》等模板书籍,还有研读STLLoki(部分)Boost库源码时候。毕竟,当时学习过程中,真的热衷于template,恨不得所有C++代码都用上模板,追逐各种奇淫技巧。
“有一点你要相信,借着C++ template有着完整自动机那样的推导功能,在泛型编程的世界里你无所不能。”这点就是当时的C++ template编程的信念。

那时候,针对模板方面,学习、测试性C++代码还保存着一些在硬盘上面,后来索性放到了Github保存着,以做纪念。有想待有时日与闲情,不妨翻翻,“温故而知新,不亦乐乎?”。

……

# 我的观点


我想说的很简单,我喜欢模板但不滥用,慎用模板只为了提高代码质量。

PS.其实,我一直有个想法,找时间好好整理一番,关于C++ template方面知识的的个人理解与总结,博文一篇。祝我早日完成,多谢。
(后续)
……


表示对C++ template 火星人,(美)Andrei Alexandrescu,的敬仰!


# 链接

没有评论:

发表评论