失控三

第三章 有心智的機器

有心智的機器

這個章節(jié)很多部分像是一部小說,一部機器人科幻小說。在快速閱讀的過程中,又不時冒出能讓我渾身起雞皮疙瘩的共鳴。

當一個系統(tǒng)能夠正常運轉(zhuǎn)時,不要打擾它;要以它為基層來構(gòu)建。

必須從簡單的局部控制中衍生出分布式控制,必須從已有且運作良好的簡單系統(tǒng)上衍生出復雜系統(tǒng)。

眾愚成智

@ 先做簡單的事。

@ 學會準確無誤地做簡單的事。

@ 在簡單任務的成果上添加新的活動層級。

@ 不要改變簡單事物。

@ 讓新層級像簡單層級那樣準確無誤地工作。

@ 重復以上步驟,無限類推。

以上是布魯克斯的移動機器人實驗室開發(fā)出來的一套普適分布式控制方法。他在講機器人的控制方法,我腦海中浮現(xiàn)的是我們軟件的開發(fā)構(gòu)建方式。想一想我們開發(fā)軟件的過程中,一開始的功能應該是簡單的,隨著時間的推移,需求不斷的加入,原本簡單的功能變得不再簡單。稍不留神地一個改變,原本還是工作的功能居然產(chǎn)生了不可思議的“禮物”。這個場景我們應該不陌生。對于這樣的結(jié)果,原因一定不在時間上面,也不在不斷加入的需求上面(假設需求都是合理的),那原因在哪里呢?聰明的讀者如你,應該已經(jīng)把眼神聚焦到上面那段普適機器人分布式控制方法上了。

我們對照著這個控制方法一起來掰扯掰扯軟件開發(fā)?!跋茸龊唵蔚氖隆?。這一條讀起來很簡單,但真正做起來就不那么簡單了。首先,我們要認清什么是“簡單的事”??赡躊M或BA拋過來的需求一開始就不簡單。作為開發(fā)者在接這個需求的時候就要考慮這個需求背后是要滿足什么?所謂真正的需求。針對這個需求應該進行功能拆解,找出原子化的操作功能,也就是簡單的事。對于這些原子化的操作功能,我們可以編寫足夠覆蓋率的單元測試來保證它的準確無誤。這些原子操作應該是穩(wěn)定的,是相對獨立的。在這個基礎上,我們將這些原子操作進行組合來完成更高階的需求。同樣,我們對這一新組合出來的層級加以測試覆蓋來確保它的準確無誤。面向?qū)ο箝_發(fā)原則SOLID中的SRP(單一職責原則,Single Responsibility Principle)也是在講識別和維護好“簡單的事“。在這邊我想澄清一下,原子化或單一職責并不等同于簡單。但是我相信您一定會同意如果不這樣一定會更加不簡單:)

寫到這里,腦海中又浮現(xiàn)出樂高積木。這些“簡單的事”就好比樂高那些制作精良的基礎積木。通過這些基礎積木巧妙組合,我們可以搭建出形形色色的造型,可以是飛機,可以是坦克,甚至是帝國大廈。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,351評論 25 708
  • 點擊閱讀上一節(jié):《失控再解讀》第2.1節(jié)-一個站在上帝視角看世界的人(以及整書的章節(jié)梳理) 第二章-失控原著精髓(...
    夜妖黑貓閱讀 3,071評論 0 7
  • “我恨你,你奪走了我的愛?!?表弟惡狠狠地對尚在襁褓中剛滿月的弟弟說。 這只是無數(shù)生了二胎家庭中一個很小的片段,聽...
    山幾同學閱讀 295評論 0 0
  • 文/安小河 老去是臉上慢慢爬上褶皺,老去是歌聲漸漸披上故事,老去是眼角的光芒變得飽滿雜亂。歲月總是直觀的沾染上一個...
    安小河閱讀 516評論 0 2
  • 城市的午夜寂靜和喧囂并存,寂靜的地方只有平靜的呼吸聲,喧囂的地方在燈紅酒綠中逐漸迷失。 月光先生帶著高...
    南橘愛北枳閱讀 507評論 0 23

友情鏈接更多精彩內(nèi)容