日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

架構設計:為什么說復用是邪惡的?

jf_ro2CN3Fa ? 來源:芋道源碼 ? 作者:芋道源碼 ? 2022-12-02 14:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

為什么我們喜歡復用呢?

認為復用可以提高效率的推理邏輯是怎樣的?

你說復用帶來了這么多問題,那我們平時使用各種框架,基礎算法庫都要自己寫一份嗎?

那我設計系統(tǒng)時,盡量將我的設計通用化就好了(例如拆很多個 CRUD 的微服務),這樣就能更多的進行復用,提高生產效率對嗎?

那系統(tǒng)設計好的標準是什么?衡量的維度有優(yōu)先級嗎?

總結

在系統(tǒng)設計和寫代碼的過程中,我經常會聽到「復用」這個詞,以「復用」為目的來設計技術,業(yè)務,組織架構。例如:

抽象出一個類,函數,UI 組件,用于不同的場景

抽象出一個微服務,越細越好,這樣可以靈活的組合

抽象出一個業(yè)務中臺,沉淀各種基礎業(yè)務功能,供全公司使用

組織(管理)架構中,抽象出一個職能豎井(后端,前端,QA,財務),被不同的產品使用

產品設計中要完成一個性能功能,發(fā)現(xiàn)跟之前一個功能相似,就復用之前的功能設計,改改繼續(xù)用

為什么我們喜歡復用呢?

主要目的:既然一部分功能已經存在,為什么還要自己造呢?直接拿來用,這樣我可以做得更少,所以能夠提升個人的生產效率。

接受的教育:一直以來的教育,大部分工程師都學習過 DRY principle;《設計模式》的的英文書名就是 《可復用面向對象軟件的基礎》,都在強調復用。

編程習慣:在面向對象語言里,工程師習慣了繼承,而繼承對于大部分人來說的目的就是復用

基于 Spring Boot + MyBatis Plus + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

認為復用可以提高效率的推理邏輯是怎樣的?

如果我們要寫一個系統(tǒng)的所有代碼,我們需要寫大量的代碼。

如果我們能從其他地方重用一些以前寫過的代碼,我們就能寫更少的代碼。

我們能重用的代碼越多,我們寫的代碼就越少。

我們寫的代碼越少,我們就會越早完成系統(tǒng)!

這樣的推理邏輯是存在如下誤區(qū):

所有的代碼(功能)需要相同的時間來寫

寫代碼是完成系統(tǒng)的最主要工作

如果你要寫得代碼依賴很多其他的「復用」模塊,你就要去理解不同的「復用」模塊提供的接口,很多時候只看文檔都不行;如果「復用模塊」的接口不是正好是適用你的場景,你就必須在講究使用接口和對方排期之間進行選擇。

此外對于如何抽象出一個公共業(yè)務模塊,大部分人都沒什么標準,公共業(yè)務模塊的負責人成了業(yè)務的外包,效率更低。

另一點是任何維護生產環(huán)境系統(tǒng)的人都知道寫代碼只是整個工作中一小步,而且是確定性最高的一步,之后維護才是最占用時間的。我們需要不斷地進行調試,部署,再調試,部署。一個用于很多依賴的模塊相對依賴少的模塊做這些工作的難度是高很多的。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/

你說復用帶來了這么多問題,那我們平時使用各種框架,基礎算法庫都要自己寫一份嗎?

肯定不需要自己再寫一份,我們平時會使用各種編程語言(Java,Go),框架,庫。我們使用這些沒有任何問題,因為這是共識和標準,他們是足夠「通用,一般化」,并不是為了某個業(yè)務或者某個公司定制的。先有「共識,標準」,再談復用,絕對不是隨意的拿過來用。

那我設計系統(tǒng)時,盡量將我的設計通用化就好了(例如拆很多個 CRUD 的微服務),這樣就能更多的進行復用,提高生產效率對嗎?

復用不是系統(tǒng)要追求的目標。很多人認為更多模塊的「復用」,就可以做到像樂高一樣快速搭建系統(tǒng),但是很多復用并不是樂高,而是器官移植,不僅不能提高效率,要不斷面對各種各樣的排異反應,降低了速度和穩(wěn)定性。很多創(chuàng)業(yè)公司快速發(fā)展時系統(tǒng)腐化的主要問題就出現(xiàn)在了強行復用上。強行復用的案例很常見,例如:

上百個字段的數據表(例如訂單表,數據表),不清楚哪個字段在哪個場景下有效

根據名詞來設計系統(tǒng),出現(xiàn)業(yè)務中臺,例如訂單中臺,電商中臺,各部門之間不斷地扯皮

出來無數個小的微服務,然后搞個統(tǒng)一的業(yè)務編排調度層(所謂的 gateaway)來處理業(yè)務,可能還抽象 DSL;上線十分復雜,需要發(fā)布 N 各模塊;調度模塊是系統(tǒng)大單點,穩(wěn)定性迭代速度都是問題

如果有一個好的設計,我們需要謹記《Hints for Computer System Design》中的「Use a good idea again instead of generalizing it. A specialized implementation of the idea may be much more effective than a general one.」

那系統(tǒng)設計好的標準是什么?衡量的維度有優(yōu)先級嗎?

兩個評價標準自治性和一致性:

自治性:受其他模塊的影響程度,觀測模塊的接口是否穩(wěn)定。可以使用AutonomyMetrics[1] 進行衡量

一致性:應該使用一個模塊的地方使用一個模塊的程度,也可以衡量是否過早,過度抽象了??梢允褂?ConsistencyMetrics[2]

在業(yè)務層次是否要從多個業(yè)務模塊中抽象出一個底層模塊,可以通過多個業(yè)務模塊的這部分公共邏輯部分是否要一起進行改變進行判斷,如果不是需要一起變化的就不要抽象出公共模塊。

根據個人經驗如果你在要從各個業(yè)務模塊進行抽象出一個模塊保持一致與保持在模塊保持自治之間猶豫時,要毫不猶豫優(yōu)先選擇「自治」。

總結

大部分情況下系統(tǒng)的核心復雜度不會減少, 只是轉移;不會因為所有代碼一個人寫,會比分成兩個人寫更快,分工是應該且必須的。但是請注意的是:

不要為了復用隨意通用化,抽象化,復用不是目的。如果要通用化就拿ConsistencyMetrics[2] 來判斷是否是抽象合理的。

不要隨意復用其他的模塊,自治優(yōu)先,用 AutonomyMetrics[1] 衡量;如果要復用一定要確保共識和標準優(yōu)先,形不成共識和標準就不用復用。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2850

    瀏覽量

    53474
  • 函數
    +關注

    關注

    3

    文章

    4423

    瀏覽量

    67916
  • 架構設計
    +關注

    關注

    0

    文章

    33

    瀏覽量

    7260

原文標題:架構設計:為什么說復用是邪惡的?

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    園區(qū)智慧導覽系統(tǒng)定制方案(一),可直接落地技術方案(定制化需求拆解與技術架構設計)

    隨著智慧園區(qū)建設進入精細化運營階段,智慧導覽系統(tǒng)定制方案有效解決“尋路難、信息獲取繁”的痛點,滿足不同園區(qū)的個性化定制需求,本文聚焦園區(qū)智慧導覽系統(tǒng)定制化核心,從需求拆解、技術架構設計、核心功能定制
    的頭像 發(fā)表于 05-09 17:08 ?1560次閱讀

    如何確保微電網標準化架構設計流程的完整性?

    當前,微電網建設普遍存在設計流程碎片化、環(huán)節(jié)銜接不暢、標準執(zhí)行不到位、成果追溯缺失等問題,導致架構設計與實際需求脫節(jié)、工程落地困難、運維成本偏高,甚至影響系統(tǒng)長期穩(wěn)定運行。GB/T
    的頭像 發(fā)表于 04-24 11:19 ?152次閱讀
    如何確保微電網標準化<b class='flag-5'>架構設</b>計流程的完整性?

    交直流混合微電網:混合架構的設計挑戰(zhàn)與解決方案

    “交直流協(xié)同、源荷直連、高效節(jié)能”為核心,其混合架構的合理設計成為關鍵,但在工程實踐中,混合架構設計面臨諸多技術挑戰(zhàn),如何破解這些難題、優(yōu)化架構設計,成為推動交直流混合微電網規(guī)?;涞氐暮诵拿}。本文
    的頭像 發(fā)表于 04-20 16:47 ?1042次閱讀
    交直流混合微電網:混合<b class='flag-5'>架構</b>的設計挑戰(zhàn)與解決方案

    交流微電網架構設計:拓撲結構、核心組件與適配場景

    “雙碳”目標實現(xiàn)的重要載體。交流微電網架構設計的核心,是通過合理規(guī)劃拓撲結構、科學配置核心組件,實現(xiàn)與應用場景的精準適配,最終達成安全穩(wěn)定、高效經濟的運行目標。拓撲結構決定架構的整體布局與運行特性,核心
    的頭像 發(fā)表于 04-09 16:54 ?878次閱讀
    交流微電網<b class='flag-5'>架構設</b>計:拓撲結構、核心組件與適配場景

    西格電力微電網總體架構設計:分層分布式控制體系構建

    隨著分布式新能源規(guī)?;瘽B透、負荷需求多元化升級,微電網作為整合“源、儲、荷、網”多單元的新型能源系統(tǒng),其安全穩(wěn)定、高效經濟運行的核心訴求,對總體架構設計與控制體系提出了更高要求。微電網總體架構是系統(tǒng)
    的頭像 發(fā)表于 03-31 11:44 ?571次閱讀
    西格電力微電網總體<b class='flag-5'>架構設</b>計:分層分布式控制體系構建

    2022全新版!Java分布式架構設計與開發(fā)實戰(zhàn)(完結)

    2022全新版!Java分布式架構設計與開發(fā)實戰(zhàn)(完結) 分庫分表實戰(zhàn):Java海量數據存儲架構設計 在現(xiàn)代互聯(lián)網應用中,隨著業(yè)務規(guī)模的指數級增長,數據庫性能瓶頸已成為制約系統(tǒng)發(fā)展的關鍵因素。當單
    發(fā)表于 03-30 15:20

    微電網總體架構設計原則:安全、高效、靈活的三重導向

    的運行穩(wěn)定性、能源利用效率與場景適配能力。在微電網架構設計中,“安全、高效、靈活”三大導向并非孤立存在,而是相互支撐、協(xié)同統(tǒng)一的有機整體——安全是底線,筑牢微電網運行的根基;高效是核心,彰顯微電網的能源
    的頭像 發(fā)表于 03-27 14:12 ?324次閱讀
    微電網總體<b class='flag-5'>架構設</b>計原則:安全、高效、靈活的三重導向

    X (Twitter) 推薦系統(tǒng)架構設計深度解析

    推薦系統(tǒng)到底是如何理解海量用戶與內容的?本期文章帶你深入 X (前 Twitter) 推薦算法庫的底層源碼。解構推薦系統(tǒng)關鍵的“漏斗型”架構——從高效的雙塔召回到復雜精妙的 Transformer
    的頭像 發(fā)表于 02-25 23:56 ?5227次閱讀

    嵌入式軟件分層架構設計原則

    嵌入式軟件分層架構的設計原則如下: 模塊化和可擴展性:每一層應當保持松耦合,這樣當硬件變化或某些功能擴展時,只需要修改對應的層次,而不影響整體架構。 硬件無關性:上層代碼應當盡量避免直接依賴硬件
    發(fā)表于 11-28 07:05

    TensorRT-LLM的大規(guī)模專家并行架構設

    之前文章已介紹引入大規(guī)模 EP 的初衷,本篇將繼續(xù)深入介紹 TensorRT-LLM 的大規(guī)模專家并行架構設計與創(chuàng)新實現(xiàn)。
    的頭像 發(fā)表于 09-23 14:42 ?1451次閱讀
    TensorRT-LLM的大規(guī)模專家并行<b class='flag-5'>架構設</b>計

    光伏電站中應用的無人機AI巡檢系統(tǒng)架構設

    維護提供數據支持,在當下的電站運營中發(fā)揮著重要的作用。 從系統(tǒng)架構設計方面來說,通過硬件層、軟件層以及云平臺層各層不同功能模塊部署設計,實現(xiàn)智能化的巡檢流程應用。首先是硬件層,通過構建無人機平臺適應如沙漠、山地
    的頭像 發(fā)表于 09-02 14:13 ?575次閱讀
    光伏電站中應用的無人機AI巡檢系統(tǒng)<b class='flag-5'>架構設</b>計

    深入剖析RabbitMQ高可用架構設

    在微服務架構中,消息隊列故障導致的系統(tǒng)不可用率高達27%!如何構建一個真正可靠的消息中間件架構?本文將深入剖析RabbitMQ高可用設計的核心要點。
    的頭像 發(fā)表于 08-18 11:19 ?1134次閱讀

    同一水平的 RISC-V 架構的 MCU,和 ARM 架構的 MCU 相比,運行速度如何?

    ARM 架構與 RISC-V 架構的 MCU 在同一性能水平下的運行速度對比,需從架構設計原點、指令集特性及實際測試數據展開剖析。以 ARM Cortex-M33 這類 ARMv8M 架構
    的頭像 發(fā)表于 07-02 10:29 ?1776次閱讀
    同一水平的 RISC-V <b class='flag-5'>架構</b>的 MCU,和 ARM <b class='flag-5'>架構</b>的 MCU 相比,運行速度如何?

    聚徽解碼——從嵌入式到模塊化:國內工控平板的柔性技術架構設

    在工業(yè) 4.0 與智能制造蓬勃發(fā)展的浪潮下,國內工控平板作為工業(yè)自動化與智能化的關鍵設備,其技術架構設計正經歷著從嵌入式到模塊化的深刻變革。這一轉變旨在賦予工控平板更強的柔性,使其能夠更高效、靈活
    的頭像 發(fā)表于 06-13 16:24 ?781次閱讀

    光伏運維管理系統(tǒng)架構設計及其應用分析

    開展。 光伏運維管理系統(tǒng)集成先進的數據監(jiān)測、故障診斷、運維任務管理等多種功能內容,為光伏電站提供全面、高效、智能的運維服務。其系統(tǒng)分層架構設計,覆蓋感知層、網絡層、平臺層和應用層。感知層通過傳感器和攝像頭等設
    的頭像 發(fā)表于 06-10 11:34 ?797次閱讀
    光伏運維管理系統(tǒng)<b class='flag-5'>架構設</b>計及其應用分析
    清涧县| 望都县| 建平县| 广饶县| 宜黄县| 图木舒克市| 佳木斯市| 台江县| 伊吾县| 体育| 苗栗县| 平安县| 洛浦县| 宣威市| 张掖市| 施秉县| 潢川县| 伊春市| 合作市| 通城县| 本溪市| 布拖县| 双城市| 琼海市| 乌拉特中旗| 海安县| 工布江达县| 泗水县| 昭觉县| 桦川县| 汉中市| 灵石县| 丰顺县| 榕江县| 吉隆县| 叙永县| 胶南市| 青阳县| 伽师县| 南雄市| 景德镇市|