官术网_书友最值得收藏!

譯者序

2013年秋天的某個周末,我在公司翻譯本書。對面一個剛?cè)肼毜拇髮W(xué)畢業(yè)生向我問起一個關(guān)于軟件建模的問題,我給她講到了實(shí)體、領(lǐng)域服務(wù)和限界上下文等概念。語畢,我立即有兩點(diǎn)感觸:第一,我已經(jīng)被DDD深深影響了;第二,即便是對于那些小的軟件項(xiàng)目,DDD依然有用武之地。

通常的看法是,DDD更適合于大型的軟件系統(tǒng),這也使很多軟件開發(fā)者對DDD敬而遠(yuǎn)之。其實(shí)不然,DDD首先作為一種思想而存在著,它無關(guān)系統(tǒng)大小,而是教我們?nèi)绾巫龊密浖O駥?shí)體、值對象這樣的概念,我相信大家都在自己的項(xiàng)目中或多或少地用到,這些概念并不只存在于大型系統(tǒng)中,而是對任何系統(tǒng)皆然,因?yàn)樗鼈凅w現(xiàn)了軟件模型的本質(zhì)所在。

曾經(jīng)有一段時間,我希望在軟件開發(fā)技能上有另一個層次的提高,于是我選擇了DDD。在看完Eric Evans那本DDD開山之作之后,我了解了不少,也迷茫了許多。和其他人一樣,我更希望看到一些實(shí)際的DDD例子。在網(wǎng)上搜索一番,我發(fā)現(xiàn)了本書;讀完示例章節(jié),我便愛不釋手了。

在我看來,DDD絕非是什么標(biāo)新立異之物,我更傾向于將其看成是軟件發(fā)展的自然結(jié)果。就像在20世紀(jì)六七十年代出現(xiàn)了軟件危機(jī)之后,面向?qū)ο蟪蔀榱巳藗兊木融H;瀑布式開發(fā)過程遇到瓶頸時,敏捷被搬上了舞臺;而DDD則是對傳統(tǒng)的以數(shù)據(jù)為中心的建模方式的反思結(jié)果。另外,我們還有“OO Done Right”的說法,即DDD是以正確的方式來使用面向?qū)ο蟮摹?/p>

我很看重事物發(fā)展過程的“自然”面。你把一組隨機(jī)數(shù)交給一個中學(xué)生排序,估計(jì)她/他也是能琢磨出一種排序算法的,此時的排序算法很可能就是我們在大學(xué)里才學(xué)到的直接排序法。我想很多人也都在程序中創(chuàng)建過一些服務(wù)類,并且將事務(wù)邊界放在這些類的方法上,那么此時,我們所創(chuàng)建的便是DDD所稱為的應(yīng)用服務(wù)(Application Service)。于是我們看到,很多知識都可以通過我們自己的自然邏輯思考而獲得。但是,我們和那些大牛的區(qū)別在于,他們有能力將這些知識概念化、理論化、抽象化和系統(tǒng)化。對于本書的作者Vaughn Vernon來說,也是如此。

如果說Eric Evans的《領(lǐng)域驅(qū)動設(shè)計(jì)》為我們提出了一些高屋建瓴的思想,那么本書便把這些思想落到了實(shí)處。而在本書中,作者也多次引用了《領(lǐng)域驅(qū)動設(shè)計(jì)》的相關(guān)章節(jié)。除此之外,本書還大量地引用了Gamma等人的《設(shè)計(jì)模式》和Martin Fowler的《企業(yè)應(yīng)用架構(gòu)模式》。所以,本書不只是關(guān)于軟件建模的,而是正如本書的贊美者之一Randy Stafford所說,它還可以用于更加寬闊的軟件架構(gòu)領(lǐng)域。

在收到電子工業(yè)出版社的張春雨編輯寄來的英文原著時,我便開始盤算:一本600頁的書,每天翻譯一頁,我需要將近兩年;每天翻譯兩頁,也得十個月……一次次的組合之后,我已經(jīng)厭倦了。于是不管三七二十一,白天工作,晚上翻譯,平時工作,假期翻譯。結(jié)果,四個月完工。

退卻的時候也是有的,并且總會有這樣或那樣的借口:“今天不在狀態(tài)”、“明天再翻譯也不遲”,諸如此類,凡此種種。每當(dāng)此時,我便想起在故鄉(xiāng)的山坡上頂著烈日當(dāng)午、彎腰鋤地汗流滴土的父親,于是再次打開已經(jīng)合上的筆記本電腦……

感謝我的父母賦予我的精神動力,使我得以順利地完成本書的翻譯。

在翻譯的過程中,我得到了我的同事,在DDD方面頗有建樹的張逸[1]的大力幫助。忘不了的,是那些在下班路上和他一起探討聚合、CQRS的日子。

感謝鄭曄[2]和格茸扎西在我還沒有開始翻譯本書時便主動提出幫我審校。另外,還要感謝澳大利亞的Mark Ryall和加拿大的Rick Harcus向我提供的有關(guān)英語語言文化上的幫助。

img

2013年10月成都


[1]張逸,ThoughtWorks咨詢師,著有《軟件設(shè)計(jì)精要與模式》,譯有《恰如其分的軟件架構(gòu)》 等書。

[2]鄭曄,ThoughtWorks咨詢師,2013年OracleDuke選擇獎得主,譯有《Scala程序設(shè)計(jì)》和《Clojure編程樂趣》等書。

主站蜘蛛池模板: 射洪县| 丹东市| 饶阳县| 东乌| 灵山县| 栾城县| 永安市| 无棣县| 宜兰市| 青神县| 巨鹿县| 南丰县| 梓潼县| 惠水县| 奇台县| 河北区| 西乌珠穆沁旗| 长武县| 左云县| 佛学| 临夏市| 大兴区| 容城县| 千阳县| 深州市| 山阳县| 三门峡市| 即墨市| 日喀则市| 乌拉特中旗| 洪泽县| 栾城县| 嵩明县| 茂名市| 青浦区| 新竹县| 泰和县| 陇川县| 县级市| 崇义县| 台南县|