磨刀不誤砍柴工,聊聊舊系統升級改造那些事兒

記得剛剛工作的時候,頭兒告訴我說,程序猿三件寶:文本編輯器、VBA、正則表達式。熟練使用一種文本編輯器,學會VBA和正則表達式,會給你日常工作帶來很多便利。正如我們當時所在的w項目,很多代碼轉換,因此有着大量的文本處理,需要統計,發現相同問題的代碼要寫VBA工具去批量改正,這個時候用文本編輯器的行編輯功能就能很快把相關文本修改成相同格式便於用VBA工具做進一步處理,從而提高效率,減少手工修改帶來的手誤。

在前面講到在系統升級改造的時候如果涉及到代碼的統一轉換升級,制定了相關的代碼轉換規範,當代碼格式命名足夠規範的時候,通過開發工具,將特定格式的代碼根據相關規則了轉換成相應的代碼,是能極大提高轉換效率的。就如同我們在W項目裏面做的,將COBOL,JCL和CICS MAP文件進行轉換,IBM COBOL轉成MF-COBOL、VSAM文件操作轉換成對Oracle數據庫的代碼,JCL轉換成bat批處理文件,CICS map轉換成jsp。通過VBA工具的開發,將重複機械的代碼轉換變成工具自動化處理,並標示出那些需要手工修改的地方,它能在幾分鐘內將上千份源代碼文件處理完畢。

wKioL1dzdD7yk3jCAAJpyC6MQGY436.png

從上圖我們就能看到在這個項目的代碼轉換過程中就使用了COBOL轉換工具和頁面轉換工具,將需要修改的代碼進行相應的轉換,以適用於下一流程的工具所需輸入。在此項目當中我們開發了各式工具超過30種,這些工具有力的支持了我們代碼的轉換工作;甚至在當時項目未採用bug管理系統的時候,所有bug都是使用excel文件進行管理,但一個個文件難以詳盡統計其分類,查看其修正進度和具體原因,於是我們又開發了統計分析Bug報告的統計VBA工具,通過使用VBA讀取標準的格式下的報告,進而統計輸出我們所需的報告。

對於項目工具的開發,有着以下幾個步驟:

wKiom1dbgf-BIN9VAADETRpOmXw855.png

工具的開發對於軟件開發來講,我們都是站在前人的肩膀上前行,如同各種各樣的框架,它們也是工具,因此學會使用工具,進而創造工具,甚至開源自己的工具以造福更多人。在項目開發的過程當中通用工具的開發,往往已經成爲項目核心成員每天要做的工作,在解決項目痛點的同時,提高勞動效率和降低項目風險有着關鍵的作用。

如同我參與的一個GIAS級項目,在轉換客戶的客戶化程序的時候,客戶出於方方面面的原因未及時提供原有系統界面截圖,導致我們轉換後的頁面無法知曉其原有頁面佈局及相關需要顯示的字段,是的客戶化程序的轉換停滯不前。我基於前面W項目的工具開發經驗,使用VBA開發了RPG MAP轉HTML的工具,解決了客戶不能提供具體程序截圖的這一問題,使得項目能夠繼續推進。

在大公司裏面,開發工具更是作爲一項重要任務,但切忌用力過猛,在合適的場景下它是工具,在不合適的場景下,它也許會成爲項目的障礙。我曾參與了某公司的一個代碼生成工具的開發,開發它的目的爲了解決公司項目開發當中的一些共通問題,比如因爲業務變化快,數據架構師改了數據結構,程序代碼來不及改。它主要功能是將ERWin生成的數據結構生成對應的java代碼,SQL腳本,配置文件等等,且在經過少許配置就能運行的工程,類似Spring ROO這樣的生產力工具。這個工具想法很好,從V1一直做到Vn,經過了1、2代開發,大家覺得還不錯,前面1、2代在公司項目當中也做過推廣,有些許使用的項目,反饋並不是特別好。

於是項目架構師開始構建新一代的工具Vn,前前後後做了兩年,效果也出來了,很多地方確實達到了之前預想的結果。但是我後面發現沒有項目願意用它了,沒有了上層的推動是一方面;在另外一方面,做的過於複雜也是其不受歡迎的原因,使用者需要花費較長的時間來學會使用它,而且它生成的代碼過於複雜在調試的時候尤其不便,做成了大而全的東西,相當於原本我們只需要一個小小的手推車,結果他給你造了一輛重卡,雖然能滿足你的需要,但是使用成本維護太高,且學習曲線還陡,沒有我們項目的人對其進行培訓,其他項目的成員難以自行使用。

重複造輪子本身沒有錯,造合適的輪子才更有意義。大公司有錢可以任性,採用跨國團隊開發一個巨無霸工具,雖然某些指標比流行的ORM框架要好,但到頭來卻沒有多少項目採用,未免令人唏噓。

因此開發工具亦有以下幾條值得注意:

wKioL1dbg1nQIFeiAAIBWCJCysE500.png

學好和利用工具是我們程序員的必備素質,偶爾在生活中也是可以幫家人朋友處理一些棘手的事情,比如我的一位朋友接手管理某酒店的工程部,但是工程單還是傳統的excel管理,同樣的統計監管要求使得他難以一份份的去查看下面工作的情況,因此找我爲他寫了一個VBA工具,解決了他工作中的難題。

此外還可以成爲泡妞神器,幫妹子解決一些工作上的效率問題,寫過一個自動化生成遊戲NPC名字工具,通過配置瞬間生成一系列,成千上萬個NPC名字供她挑選啊, 亦有通過解析遊戲文案excel,自動生成對話Lua腳本的工具,這些都極大減少了妹子加班的時間啊。看到了妹子崇敬的眼神了沒?

作者介紹

王巍,漣拓網絡架構師,前後就職於Achievo、IBM、HP,關注前沿技術,分佈式系統架構,組件化系統開發,機器學習和大數據,現在創業公司負責系統架構,樂於與大家一起聊聊架構。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章