精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

Eric Evans:DDD不是為完美主義者而生

責(zé)任編輯:editor005

作者: Jan Stenberg

2017-02-27 11:34:03

摘自:INFOQ

追尋完美設(shè)計(jì)是從一開始就伴隨著領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)的常見問題,但DDD不是為完美主義者而生的。Evans認(rèn)為康威定律(Conway s law)和限界上下文的概念之間存在一定的關(guān)聯(lián),他想創(chuàng)立一些東西來(lái)應(yīng)用該定律。

追尋完美設(shè)計(jì)是從一開始就伴隨著領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)的常見問題,但DDD不是為完美主義者而生的。最近在阿姆斯特丹的DDD歐洲會(huì)議上,Eric Evans在其演講中指出,為了停止這種追求,你需要對(duì)如何創(chuàng)建設(shè)計(jì)良好但并不完美的軟件有一些概念,他還給出了一些這些年使用DDD的示例。

最早的DDD圖書的作者Evans指出,限界上下文的最初目的是讓我們認(rèn)識(shí)到我們開發(fā)軟件的開發(fā)環(huán)境相當(dāng)復(fù)雜,它涉及許多遺留系統(tǒng)和其他的外部系統(tǒng),以及可能帶來(lái)影響的其他團(tuán)隊(duì)。在圍繞軟件的一部分的上下文中,你擁有概念上的一致性,在此特定的詞總是意味著相同的事情。作為開發(fā)人員,你應(yīng)該能夠識(shí)別出你是否處于上下文的邊界內(nèi),然后需要遵循特定于該上下文的規(guī)則。邊界令你可以自由定義適用于那里的規(guī)則;不僅包括使用的術(shù)語(yǔ),還包括架構(gòu)和開發(fā)過程。Evans指出,微服務(wù)應(yīng)該是自治的,可以成為良好的限界上下文,但強(qiáng)調(diào)這一點(diǎn)并不意味著服務(wù)總是限界上下文,有時(shí)開發(fā)人員會(huì)把服務(wù)理解為限界上下文。

Evans認(rèn)為康威定律(Conway's law)和限界上下文的概念之間存在一定的關(guān)聯(lián),他想創(chuàng)立一些東西來(lái)應(yīng)用該定律。他舉了一個(gè)例子,在一個(gè)系統(tǒng)中有兩個(gè)上下文:一個(gè)負(fù)責(zé)信用卡,另一個(gè)負(fù)責(zé)現(xiàn)金帳戶。這里我們?cè)诮M織架構(gòu)、子域和限界上下文之間取得了協(xié)調(diào)一致。但是現(xiàn)在,為關(guān)注細(xì)分市場(chǎng)進(jìn)行業(yè)務(wù)重組,將商業(yè)帳戶與個(gè)人帳戶分離,并為每種帳戶創(chuàng)建了一個(gè)團(tuán)隊(duì)。兩個(gè)上下文保持不變(商業(yè)賬戶和個(gè)人賬戶都有信用卡和現(xiàn)金。譯者注),現(xiàn)在兩個(gè)團(tuán)隊(duì)都在這兩個(gè)上下文中開展工作,時(shí)而發(fā)生的沖突意味著他們要協(xié)調(diào)他們的工作。他將這比喻為三足賽跑,為了提高速度,協(xié)調(diào)是必要的。在這種情況下,可能的風(fēng)險(xiǎn)是產(chǎn)生一個(gè)雜亂無(wú)章、隨意堆砌的系統(tǒng)(Big ball of mud),Evans看到的一個(gè)常見原因是對(duì)軟件開發(fā)缺乏清晰的管理。一個(gè)可能的解決方案是建立一個(gè)新的邊界,使用防崩潰層(Anti-corruption layer)。

有時(shí)一個(gè)模型并不完備,不足以處理所要處理的所有情況。不是要?jiǎng)?chuàng)建一個(gè)能夠處理更多情況卻感覺很笨拙的模型,而是可以選擇創(chuàng)建一個(gè)函數(shù)來(lái)處理模型未能處理的情況。這樣的函數(shù)和許多if-then-else語(yǔ)句一起工作,和任何高層概念保持距離以避免創(chuàng)建另外一個(gè)模型。不應(yīng)該使用不完備的或難以理解的抽象。Evans指出,最好使用if-then-else語(yǔ)句而不是錯(cuò)誤地認(rèn)為要?jiǎng)?chuàng)建一個(gè)優(yōu)雅的模型。創(chuàng)建這樣的模型可能最終連能工作的模型都找不到。他認(rèn)為追求一個(gè)好的但并不完美的設(shè)計(jì)是關(guān)于權(quán)衡的很好的例子。

Evans不建議非得等到模型完美了才去使用它,那樣的話我們將無(wú)法發(fā)布任何軟件。我們必須忘掉這樣的想法,即只要你在前期投入額外的時(shí)間去做設(shè)計(jì),從長(zhǎng)期來(lái)看就一定能得到回報(bào)。然而,我們不能走向另一個(gè)極端,只是堆砌一些可怕的東西并發(fā)布出去。如果我們?cè)谀P椭杏幸庾R(shí)地做一些權(quán)衡,并具備一定的技能,在對(duì)已有模型不滿意時(shí)知道該怎么做,將會(huì)得到更好的結(jié)果。

查看英文原文:Eric Evans: DDD is Not for Perfectionists

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 章丘市| 迭部县| 洛扎县| 古浪县| 曲靖市| 当涂县| 绵阳市| 长春市| 垫江县| 灵台县| 山东| 日照市| 从化市| 称多县| 华坪县| 抚州市| 墨江| 陆河县| 海城市| 夏河县| 上杭县| 温泉县| 社旗县| 马关县| 无极县| 江孜县| 馆陶县| 宜春市| 寻乌县| 神农架林区| 鄱阳县| 池州市| 嘉祥县| 安吉县| 丹阳市| 平山县| 临清市| 托克托县| 景宁| 曲阜市| 丰原市|