VC编程中的连续运算--从国际化版本编译优化展开

     这段在改造已有模块代码,以适应国际化版本和非国际化版本的编译问题。在改造中,最终接触到了A2T和T2A等方便的ANSI与UNICODE之间互转的方面VC6宏定义。但在没有找到这两个宏之前,采用的最多的就是CString和bstr_t两个类对其做类型转换以转换到对应的字符串类型,特别是CString类由于可以非常自然地适应UNICODE版本和非UNICODE版本编译,所以,在固定需要TCHAR数据时,利用CString作为转型的中介是非常不错的选择的!

    例如,入参固定为char*的字符串,但是要得到tchar*的字符串,在不用到条件编译的情况下,我自然地选择了强制类型转化为CString的临时对象,然后再由CString提供的字符串强制类型转换,转换到tchar*。这样从形式上避免了条件编译,而且形式上仅仅一个转型就达到了目的:)(虽然内部展开的代码也不菲的,呵呵)

     对于此种强制类型转换,自己当时非常欣悦。因为这种感觉就类似Linux Shell里面利用shell命令进行连续运算一样,最终运算出来一个自己期望的结果,同时具有形式上的美感。而且痛感我们对于VC等系统编程性能参数要求过高,而让编程失去形式上的美感。如果VC中也可以不太考虑性能参数,其实利用各种专付此职的类进行各种连续运算,也可以做到类似Shell脚本,也是非常棒的!就像Linux Shell脚本中利用比较多的小命令组合在一起最后完成一个不错的功能。虽然从学术上讲,单一足够小的类能够避免软件开发中的难题,但是实际开发中不免要出现各种庞大的类:) 这是个目标或理想,就看达到的程度了:(

   另外,这段觉得大部分Linux Shell脚本命令的基础输入或输出通常是基于行的概念,在这样的条件下“接口”具有一致性,比较容易玩各种连续运算。

         所以,在实践连续运算编程中是接口一致或者约定一致或目标一致是非常重要的,Lisp中的函数编程也不过是如此的!

   


发布了128 篇原创文章 · 获赞 7 · 访问量 23万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章