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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章