這一年來讀了讀有關國外大牛和先輩相關的書,最近本身也在作項目架構.見一些同行的言論,有些感觸web
有贊同的地方也有不贊同的地方,這裏談談本身的架構觀.編程
不少人在玩技術技巧,但架構這東西非做秀,然而一些人在這麼幹,瀏覽器
架構的審覈標準第一條:便捷、易維護、適合於需求不斷調整業務場景.架構
曾經在一個企業見過這樣的場景:所謂的一個leader十多年的時間帶領一幫人作一個簡單的信息管理系統,app
他們全部的一切都一團糟,卻玩起了技術秀--學着別人作DDD.async
邯鄲學步的後果--徹底在模仿形式,系統隨着需求調整和加增時當即變現出來牽一髮動全身.性能
還有一個明顯的表現:開發和維護起來的靈活性徹底喪失.測試
架構不是表演、而是爲需求和開發人員服務的. ui
用過async await的朋友,估計會發現微軟設計中的問題:一致性問題,UI編程模式下(winform wpf等)和在spa
純編程模式下的實現一致性問題.這不只讓我想到一直讓人唾棄的ASP.NET webform,微軟這些年幹了一些荒唐事情(直到VNEXT的出現).
微軟這些年不行了--這不是我說的,而是一位曾擔任微軟亞洲架構師說的.不要問我是誰,不會告訴你.
由於這幫人在玩技術概念,而不是作好的架構.
世界上最好的學者老是能夠深刻淺出的把大道理講給外行聽,而不是故弄玄虛的把簡單的問題複雜化。--數學之美.
就DDD而言,我贊同其中的層次理念,但人們的使用估計多數在邯鄲學步,
我問:你這麼用DDD,徹底在套形式呢?仍是讓全部的業務都在等着你這麼去使用??
有人贊同個人反問,有人 贊同對方.各類緣由不在評說.
只讓你們去思考一件事情:軟件開發中惟一不變的是:業務需求一直在變:調整、增減.
架構的目的在於爲需求和開發人員服務.
這些年出了幾個基於瀏覽器的PC操做系統,如谷歌,惠普等??還有相似的手機操做系統如Mozilla.
架構理念堪稱完美,但最終都成了邊緣、廢棄的東西.
首先從架構上來說,他們的設計理念確實很完美:
利用Html5
1.解決了開發成本問題;
2.解決開發人員稀少問題;
3.解決操做系統自己維護問題;
以上是他們的如意算盤,但他們最終失敗了,他們說之因此失敗---性能和用戶體驗.
但仔細想一想,難道一開始他們沒有想過這個問題?不會,絕對不會犯這麼低級的錯誤,
不管怎樣都考慮過這個問題,至少他們認爲:性能到時候應該不是一個問題.
那麼爲何會失敗呢?
他們脫離了現行市場的考驗:當下市場中的產品,他們的優點本身是否具有,
畢竟其餘的系統都已經成爲市場巨無霸了,而本身的新東西是否具有顛覆現行需求的基本條件???
這是IT決策者和市場脫節的後果.
代碼重用性、耦合度、可維護性、可測試性
在談及這四種特性以前,咱們談談業務功能,
全部的開發都是圍繞着業務功能走的,每個業務功能(如充值)都由
其餘更細的圍繞着該業務的小功能組成.
責任越多,越不易被重用;
涉及得越多,越容易耦合;
便於構造和觀察的輸入輸出,纔能有更好的測試性.
沒有人告訴你何時該敏捷開發、何時應該瀑布型開發,
但不管何種開發開發模式,謀定然後動是其根本,
謀定然後動不是指一種開發模式,而是指一種作事的原則.
出來混的早晚都是要還的,明白人都懂得這個道理.
------------------------------------------
這個瞭解過嗎?