專案總結(按照介面程式設計)

2021-04-30 22:00:36 字數 1120 閱讀 1631

原來一直做c的專案開發,系統還算穩定,做了差不多3年,核心的**都重寫了2遍以上。去年開始做新專案,為了提高開發效率,決定上c++。

c++就是好呀,成熟的庫一大堆,於是選定了boost、ace作為系統的主要支撐庫。boost還不錯,塊分的很好,團隊學習起來很容易。ace就有點麻煩了,封裝層還算易學,框架層就比較複雜了。還有就是ace一些比較特殊的**風格,也著實花了一些時間。

於是風聲水起,專案就在去年8月的某一天開始了。按照原來專案開發的經驗,把專案分成了若干子專案,都做成動態或靜態的鏈結庫,把變動或有替換性的做成動態庫。結果問題來了,介面上c++還是必須退化到c介面,完全沒有好的方案來實現,最後做了妥協,用了一段巨集封裝的物件的傳遞。(後來看到ace上好像有相應的解決方案,不過好像比較複雜,沒有仔細研究。)

到了12月,專案還算順利,已經做到大半。結果需求變更了,很大的變更,公司希望我們的框架不光實現旁路模式,還能夠實現網管模式,原來的層層緩衝的框架完全不行了。還好,模組化很好,我們決定快速掃尾(把各個模組重構解決耦合的問題)。然後甩掉目前的爛攤子,進入下乙個迭代。結果發現所有動態鏈結的地方多不錯,因為簡單的c介面決定了其合理的移植性。而c++靜態庫的就麻煩多了,專案之間的依賴變得極為複雜。看來還是經驗不足呀,在介面上依賴過多,最後費了很大勁才解決。

這個時候專案的**量已經超過60k了,特別是跟專案同步開發的分析模組,已經移植了大量原有**。結果現在介面又做出重大調整。沒辦法了,只有做一段**來橋接,效率極差,但功能是有了。

第二次迭代開始了,於是乎原來的問題全部又可以解決了,重新審視設計,其實專案沒有做到真正的按照介面程式設計,層次結構也不夠清晰了,原來制定的分層,模組,都出現了很多的穿越者,為了某個功能的穿越,為了原有**復用的穿越,甚至是硬體驅動問題導致的穿越。每個模組都被開了很多洞,來了很多外來者,為什麼我們都沒有發現呢?工期,進度也許是原因。但就這樣無能為力了嗎?

介面是需要精心設計的,可原來c的為什麼沒有遇到這麼多的問題呢?原來有一套雖然老化但是穩定的介面,任何人都不敢對介面做出太多的改動,因為誰都害怕介面改動會帶來不可預知的問題。為什麼現在c++了反而大家都敢隨意的改動介面呢?

新的專案,本來就不穩定,都不怕增加新的不穩定性;  沒有強有力的去約束介面的重要性;因為強調敏捷,所以**沒有了所有權,大家敢於去觸碰所有的細節。

結束也是新的開始,約束介面,重構架構。

介面程式設計總結(5)

利用介面開發包美化介面 一 skinmagic skinmagic toolkit是一套功能強大的介面解決方案庫,我們提倡介面和業務邏輯相分離,將程式設計師從煩瑣的介面設計中徹底解放出來,將精力集中在業務功能的實現上,提高產品的開發效率。網路上的skinmagic版本繁多,而且試用版,破解版並存,各...

總結面向介面程式設計

此處的 介面 與程式語言中的 inte ce 定義稍有不同,面向介面程式設計 中的介面是一種思想層面的用於實現多型性 提高軟體靈活性和可維護性的架構部件,而具體語言中的 介面 是將這種思想中的部件具體實施到 裡的手段。優點 1.可擴充套件性良好.例子 public inte ce hardware ...

結對程式設計專案總結

結對程式設計的優點 最直接的一點 在結對程式設計中,由於有另乙個人在你身邊和你配合完成同樣一件事情的,所以相對來說你不好意思糊弄,不好意思開小差,更加自覺。結對程式設計的時候兩個人互相審查對方程式設計時的小錯誤,相當於隨時隨地地審查 減少錯誤出現的機率。結對程式設計的缺點 結對程式設計成員並不總在一...