首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

設計可擴展應用程式(三):黑箱擴展性的識別、選擇與語言設計原則

     編輯:Java 相關知識

對應透明箱擴展性,黑箱擴展性指:源代碼不可查看/修改時,透過系統配置或專用腳本語言擴展系統。本文討論何時設計黑箱擴展有意義,及有效實現技巧。

如何識別配置腳本

程式輸入皆可視為語言,但配置腳本特徵:

  • 較穩定,有預設值,安裝時設定,長期不重置。
  • 修改預設值對其他輸入行為有重大影響。
  • 永久儲存,後續調用檢索。

明智選擇配置範圍

非盡量增加擴展性。終極結果是單一應用透過腳本執行所有任務(如 Emacs),但腳本極長複雜。基本權衡:擴展性越強,用戶配置工作越多。通常最好確定較窄但通用的需求範圍,再針對具體環境擴展。XP 團隊證實:縮小範圍反而更易準時成功。

某些環境必須黑箱

特定環境確定需黑箱擴展,且不增加過重負擔。常策略:先實現不可擴展的窄範圍版本(1.0),再於後續版本添加擴展性。因構建不可擴展版本更便捷,能讓客戶更快用於部分任務,銷售收益支持後續開發。

黑箱擴展為最簡單設計的例子

  • 稅務計算應用:適用多組稅單,用配置語言描述表單最自然;硬編碼類別層次不減複雜度。新財年添加表單無需動源碼。
  • Web 瀏覽器、電視節目指南、公理資料庫自動定理證明器。

值得驕傲的語言:配置語言設計必修課

決定提供配置語言時,必須認清你在設計一種語言,需考慮同類問題:

  1. 正式、定義明確的語法與語義。
  2. 解析器拒絕非語法有效規範。
  3. 盡可能支援環境相關檢查(如型別檢查)。

忽略步驟極普遍,後果:難追蹤腳本錯誤(參見「破壞者資料錯誤模式」),甚至引發安全攻擊(如 Code Red 病毒源於輸入解析失誤,詳見 Ross Anderson《Security Engineering》)。

XML 的優缺點與 S-Expression 替代方案

XML 優點:現成解析器/工具豐富,便於腳本跨應用重用(如分子 XML 描述重用於藥物設計工具),語義定義良好才能低成本重用。

XML 缺點:腳本冗長,編碼可執行代碼笨拙,工具資源開銷大。此時 S-Expression 為佳替代:單一括號形式,源自 Scheme,易於任何語言(含 Java)處理,不依賴反射式處理。

預告

下期將示範基於 S-Expression 的配置語言簡單範例及其 Java 解釋器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved