回覆列表
  • 1 # 使用者57733767485

    最近在給GacUI做1.0之前一個巨大的重構,其實就是因為被程式碼醜哭了。其實這東西也不是我故意這麼寫的,只是用C++寫GUI跟用XML寫GUI的結構的確不一樣(主要是各種元件的依賴方向是相反的)。GacUI剛開始的時候是沒有什麼XML的,整個設計出來都是為了讓C++寫GUI方便,於是導致了現在XML生成的程式碼一環套一環。現在要把類介面改成為了XML方便,C++寫GUI管他麻痺,反正也不是不能寫(逃

    舉個例子,一個DataGrid的ItemTemplateFactory,其實就是which 實現了一個ListView的ItemTempateFactory,which 實現了一個SelectableList的ItemTemplateFactory,which 實現了一個List的ItemTemplateFactory。這裡面用了無數次adaptor模式。

    因為這幾個類是分開幾年寫的,所以單獨寫它們時候並不覺得有什麼問題,現在回過頭一看覺得巨傻。所以最近做的事情就是,把ItemTemplateFactory的介面都刪掉,把依賴倒轉過來,讓ItemTemplate去依賴ListControl。那麼一個DataGrid的ItemTemplate它就是ListControl的ItemTemplate,而不是Factory一層一層地往下adapt了。然後這些adaptor全部刪掉。

    估計要改幾千行程式碼了,不過為了乾淨,GacUI又沒有死線,沒關係,慢慢改。既然有了XML,那所有的TemplateFactory都可以不要了,列表改完就改控制元件的,上百個類全部刪光,功能不變,XML寫好的GUI一行都不用改。做完這次大重構之後,就可以做簡單的2D和3D的向量圖,再做幾個圖表控制元件,重做一次ParserGen,intellisense搞定,GacStudio的各項技術也就全部準備好了,最後拼起來,1.0就可以釋出了!

    只能讚歎微軟設計WPF的人實在是太牛逼了,除去了一些C#特有的、不相容C++的設計以外(如dependency property/routed event),凡是我做的跟WPF不一樣的,最後都證明是WPF那樣做更好。凡是我第一次做出來就覺得無比精妙、正確的設計,最後也只是跟WPF一樣(譬如說MenuItemTemplate如何跨控制元件對齊各個部分)。這幾年我給GacUI投入了大量的時間,親自體驗了各種架構設計上的優劣,感覺水平又上了一個檔次。我想做別的東西已經很久了,等什麼時候GacUI做完了,換換口味,來寫幾年前寫廢了的DB。

    Principal和Partner畢竟就是Principal和Partner,就算我程式碼寫的再熟練,架構的知識也是要靠時間才能堆出來的,還得努力學習才能趕上他們。現在已經過了那種寫一個小工具,或者搞一個數據結構,或者程式碼寫得巨優美就沾沾自喜的年紀了。每個人都有過一段中二的、覺得自己天下第一的時期。

  • 2 # 網際網路專業搬磚

    曾經寫iOS程式碼,為了得到應用內開啟的一個網頁的標題,我呼叫html和xml解析方法,把整個html文件解析了,然後遍歷html結點,得到title,在取出內容,後來等我知道呼叫一句js程式碼就能得到標題的時候,再回去看以前的一大坨程式碼,真的是要蠢哭

  • 3 # Kay0601

    拿到程式碼第一眼:哪個SB寫的,low B啊!

    看了一會兒:有點眼熟啊,似曾相識

    再過一會兒:沒錯,這注釋還是我當時的傑作呢

    左右看看沒人注意自己:這破玩意不是我寫的,誰也沒看到……

  • 4 # Eric67361997

    最近一個專案,由於需求一開始設計和專案負責人理解的需求太簡單,於是噼裡啪啦一頓擼,搞定,覺得簡單就沒想仔細劃分模組,然後就是一週改兩次需求,還有一週交付,還再改需求,設計出了n多版,重新寫沒時間,就在濫程式碼基礎上修修補補,結果就是,自己看到自己一手寫成的程式碼,真能蠢哭了,專案負責人,設計一說,就完事了,下班準時走了,我就吭哧吭哧在一堆爛泥裡痛苦,憑毛程式設計師要為別人的錯誤買單

  • 5 # ds那個星星好圓

    沒錯,每一位程式設計師的夢想都是做一個完美的系統。所以在寫程式碼的時候都是千思萬想,自己接下來的程式碼該如何來寫,才能保證自己的功能是完美無缺的。大家都知道世界上沒有完美的東西,程式碼也是一樣。所以,當這個程式猿多年以後再來看到這個程式碼的時候就會覺得當初自己在寫這個程式碼的時候多麼蠢。我就是,真的。因為即使這個玩意兒是實時在更新的,今天這個功能可能要十行程式碼才能完成,明天過後這個功能只要一行程式碼就可以了。世上本無路,走的人多了,也就變成路了。

  • 6 # 有水印來打我

    當時學習的時候,大學前幾年學的一些基礎性的知識,大四實訓,寫了一個簡單到離譜的小專案,但是就是這個專案讓我對程式碼的理解發生了翻天地覆的變化,第一次體會到了設計模式的重要性,在看之前寫的程式碼,都想拿過來重構一下,看的太難受了,之前寫的都是什麼垃圾。有興趣的可以看一下我們當時的題目,

    專案要求實現的功能

    登入

    註冊

    登出

    檢視使用者資訊,可組合查詢

    修改使用者資訊

    1.第一步所有程式碼全部寫在JSP ,使用原生jdbc 進行資料庫操作。

    2.第二步,建立實體類,把所有業務和處理轉移到servlet ,改造成2.0版本,

    3.將業務處理轉椅到service ,建立dao 層,完成3.0版本

    4.使用struts 替代servlet,業務層用spring 實現,dao 改成用hibernate 實現,完成基本的ssh結構,完成最終版本

    期間斷斷續續的添加了前端的js.jQuery css 還有java 基礎,檔案操作,執行緒之類的,講了兩三個月,真的很有用,瞭解下框架,對資料結構和設計模式有很大的幫助,直接拿過來看設計模式挺難學會的,一直處於看得懂不會用的狀態

  • 7 # 夜半小寒山

    越看越覺得不是自己寫的,怎麼能寫的這麼low,命名不對,註釋差點,方法可以再最佳化。

    嗯,可以重構一下了

  • 中秋節和大豐收的關聯?
  • 現實生活中的逆行者與“逆行者”你怎麼看待這兩個詞?