工程中的“面向對象”編程

工程中的“面向對象”編程

在工程處理中,工程師很容易寫出碎片的腳本代碼,例如處理服務器上的腳本:

  1. 假設了一些存在的環境變量、目錄結構、配置和數據
  2. 腳本基於這些假設開始做一堆中間處理,並最終得到一些輸出數據。

即使有了docker,有了k8s,無論是在docker外,還是docker內,還是會有很多這樣的工程處理腳本。

這些工程處理腳本非常容易碎片化,寫這樣的代碼也很容易就沒有模塊化,缺乏明顯的數據結構與算法的分離。

一種好的編程方式是,一旦開始寫這樣的腳本,從一開始就做“面向對象”抽象,例如

  1. 設計一個 Config 對象,處理好全局配置的處理,做好不同名稱空間的配置的正交組織,做好從配置服務、本地配置、以及命令行配置的管理。
  2. 設計一個 Option 對象,處理好命令行參數和選項的管理。
  3. 設計一個 Machine 對象,這個對象封裝了內部的各種處理細節,對外暴露出一個邏輯上機器的目錄結構、配置和數據。
  4. 設計一個 Group 對象,處理好一組 Machine 的組織和管理。
  5. 設計一個 System 對象,這個對象組織好 Config, Option, 一個到多個 Group 的組織。
  6. 設計一系列的 Executor 對象,遵循單一職責原則,處理好每個明確定義職責的基於 Config, Option, Group 環境下的明確任務執行。
  7. 設計一系列的 Schduler 對象,負責調度應用層的任務到 Executor 執行。

這是一個基本的工程中的“面向對象”編程,無論在哪一個抽象層上,這些都免不了。

--end--

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章