浅谈Configure和Setting
Configure(配置)和Settin(設置),對于軟件開發者來說應該是不太陌生的兩個術語。但是,它們之間有什么關聯和區別呢?在本文中,Anders Liu將和您一起分享一些想法。
首先,Configure和Setting都是與應用程序相關的數據,用于在運行時影響應用程序的行為。應用程序在啟動后,往往會立即(或在某些時刻)讀取Configure和Setting文件(或其他載體)中的內容,并根據具體配置和設置的不同,以不同的方式完成任務。
然而,它們的區別是什么呢?
Anders Liu認為,對于應用程序來說,Configure應該是只讀的,而Setting是可讀寫的;對于用戶來說,Configure應該是可讀寫的,而Setting應該是不可讀寫(甚至應該是隱藏的)。
例如,一個C/S架構的應用程序,需要訪問數據庫,因此需要一個連接字符串;同時,當應用程序的客戶端關閉后,還能記錄窗體最后的位置和大小。此場景涉及了3個數據——連接字符串、窗體位置和窗體大小。
那么,此時這些數據應該放在哪里呢?我們來分析一下這些數據的使用場景。
連接字符串通常由客戶端管理員負責維護(可能是在程序安裝時就寫好一個默認值,之后可以由管理員修改,以適應不同的服務器環境)。而應用程序只需要在啟動時(或需要連接數據庫時)讀取一下這個值即可。
窗體的位置和大小,通常在應用程序結束時,由應用程序對其進行持久化存儲(文件、注冊表等);而在下一次啟動應用程序時,由應用程序將其讀取出來并根據其值修改窗體的位置和大小。
由此就看出兩種數據的區別了,連接字符串“人來寫,程序來讀”,應該放在Configure中;窗體位置大小“程序寫,程序讀”,應該放在Setting中。
由此,Anders Liu想到了一些在設計和編程中的一些思路。
在設計過程中,應該對數據的使用場景進行思考(甚至進行建模,比如編寫場景/方案文檔),然后根據不同的場景決定將數據放在Configure中還是Setting中。
設計完畢后,在具體的編碼中,如果遇到了需要修改Configure的情況,那么就應該暫停下來,仔細進行思考——是場景分析的有問題嗎?如果是,考慮將數據放在Setting中,重新進行設計。如果不是,那么,應該考慮單獨提供一個應用程序(配置工具),專門扶助管理員修改和保存配置。
而對于Setting,應該盡量隱藏Setting持久化存儲的位置,盡可能隱藏(對用戶透明)。但在讀取Setting時,也需要進行嚴密的數據完整性檢查,因為不可避免有用戶手動修改Setting。(讀取Configure的檢查可以略弱一些,因為可以讓他們“與管理員聯系”嘛~ :D)
以上只是Anders Liu對于Configure和Setting的一些看法。很多軟件開發框架實際上都對Configure提供了讀和寫的支持,但Setting一般都是靠開發者自己來實現。這就造成了一種很不好的編程習慣,就是將本來因該存放在Setting中的東西放到了Configure中,最終導致——從程序的角度看,Configure和Setting的概念變得混亂,難以理解和維護;從用戶(應用程序管理員)的角度看,他們并不清楚哪些是可以改的配置,哪些是不應該去修改的設置。
總而言之,使用各種編程框架中提供的寫Configure的API時一定要慎重,如果不是在編寫“配置工具”,請盡力避免寫Configure。二是自己寫一些代碼,實現自己的Setting框架。
轉載于:https://www.cnblogs.com/AndersLiu/archive/2007/04/30/733326.html
總結
以上是生活随笔為你收集整理的浅谈Configure和Setting的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Guava、Spring 如何抽象观察者
- 下一篇: Python之functools.red