日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
一篇文章帶你了解抽象泄漏(LeakyAbstractions)

本文轉載自微信公眾號「ELab團隊」,作者ELab.xiebingyang 。轉載本文請聯(lián)系ELab團隊公眾號。

在 5 月 23 日 Online Meetup With Evan You 的問答環(huán)節(jié)中,Evan 在說到 low code 時提到一個概念 —— “abstraction leak”. 在前端開發(fā)過程中接觸過很多內(nèi)部平臺和工具,包括 low code 建站平臺、組件庫、框架和二次封裝的元框架。在這個過程中會發(fā)現(xiàn)一個比較普遍的現(xiàn)象:

  • 即便文檔覆蓋相對比較全面,開發(fā)者在實現(xiàn)或排查某一些特定的問題時仍然不可避免地需要閱讀對方平臺或庫的源碼,或了解更底層的原理。
  • 一些特定的場景下,平臺或庫索提供的接口、界面或規(guī)范不再適用;它們的抽象層次不再能滿足業(yè)務場景要求。

但是往往這些痛點并不是系統(tǒng)本身的管理或設計缺陷;更多的是某些應用場景下的“抽象泄漏”導致。本文翻譯多篇相關英文文章,并在此基礎上整合、提煉,就系統(tǒng)設計中的抽象層級和抽象泄漏現(xiàn)象進行討論。

這篇文章將會介紹:

  • 什么是抽象泄漏法則
  • 抽象機制如何“泄漏”
  • 開發(fā)者如何應對抽象泄漏

為了避免翻譯歧義,部分概念在特定場景下還會保留英文表述:

英文 翻譯
abstraction 抽象、抽象層級,名詞(在某種意義上也包含“封裝”的意思)
leak 泄漏、漏洞、漏出
interface 接口(為更高一個抽象層級開發(fā)者、調(diào)用者、消費者、使用者所展示的“界面”)
consistency 一致性;連貫、前后一致

引言

現(xiàn)在環(huán)顧四周,我們會發(fā)現(xiàn)日常生活中常常會用到一些非常復雜的系統(tǒng):智能手機、計算機、打印機、汽車、電視、烤面包機…… 雖然我們自己很難自行從零制造這樣的一個機器,但是不論這些設備或系統(tǒng)多么復雜,我們都可以正常使用它們來完成日常所需的工作。

這個小小的奇跡歸功于我們稱為 “抽象”的概念(譯者:其中也離不開 encapsulation, 即“封裝”)。抽象是一種設計概念,它簡用潔的用戶界面 (interface) 屏蔽了復雜的細節(jié),使得開發(fā)者不再需要關注這些細節(jié)就可以完成工作。抽象 (abstraction) 在每個軟件程序中都起著核心的作用,這樣的設計向站在更高抽象層級的調(diào)用者和使用者隱藏或屏蔽了 API 背后的實現(xiàn)細節(jié)。但這些抽象層級常常也會發(fā)生“泄漏”。

“抽象”是什么?

用一個實際例子解釋抽象和封裝——我們可以在瀏覽器的地址欄中輸入網(wǎng)址來訪問網(wǎng)站。在大部分前端開發(fā)場景中我們不需要了解瀏覽器如何執(zhí)行 DNS 查找找到正確的網(wǎng)站,也不需要了解設備如何與網(wǎng)絡服務器進行 TCP 握手,也常常不需要知道網(wǎng)站如何渲染一個 DOM. 這個過程非常詳細、復雜,而很慶幸瀏覽器底層的邏輯幫我們完成了這些操作,我們不需要實現(xiàn)這些能力,在大部分場景中也不需要關心這些實現(xiàn)。

在計算機軟件設計中,隨著軟件本身的迭代、軟件系統(tǒng)體積和復雜度增加,我們會不斷構建新的抽象層級,并將其添加到已有的抽象層級中、豐富已有的抽象和封裝。做任何設計都是思考如何創(chuàng)建正確合理的抽象層級的過程。一個設計合理的抽象層次會向上層暴露所有重要的和必要的實現(xiàn),但同時隱藏所有不必要的細節(jié)。一個合理的抽象層次會掌握好控制度與復雜度之間的平衡。一個合理的抽象層次可以輕松把它調(diào)用者的行為或執(zhí)行任務映射到自身方法或屬性上。如果抽象層次設計得當,它會讓人感覺使用它很直接、便利,合乎常規(guī)邏輯。

To design something — anything — is to think about creating the right abstraction.

在軟件工程領域中,對抽象層級設計的關注會更加突出。在編寫任何的代碼時都需要考慮易用性和可維護性,一個開發(fā)者需要思考如何向其他代碼隱藏這部分的內(nèi)部原理,又需要思考如何讓使用者順利地消費這段代碼的功能。抽象設計這個龐大的工程中至關重要的環(huán)節(jié)包括我們耳熟能詳?shù)脑O計模式、命名、單元測試等等,這些看似關聯(lián)不密切的關注點都有一個共同的目標——在開發(fā)者設計抽象層時,幫助我們做出正確的決策,并保持其效果可控。

因為有“抽象” (abstraction) 設計的存在,我們可以在 HTML 文檔中直接編寫