我寫的大多數程序都是相對可流程化的過程,有一個明確的開始和希望的結束。問題本身可能很複雜,但不容易傾向於集中使用對象和事件驅動的編程。通常,我只是通過大量不同批次的文本數據來產生不同的文本數據。我偶爾需要創建一個類:作爲一個例子,爲了跟蹤警告,錯誤和調試消息,我創建了一個具有一個實例(myErr)的類(Problems),我相信這是一個Singleton設計模式的示例。另一個因素是,我的同事比我更老(程序性),而且不熟悉面向對象編程,所以我不願意創造他們無法解決的問題。請儘量減少使用全局變量來描述你的工作
但我一次又一次地聽到,即使Singleton設計模式真的是反模式,應該避免,因爲全局變量不好。
小功能需要很少的參數傳遞給他們,並不需要知道配置(不變)或程序狀態(改變) - 我同意。然而,主要控制程序流程的鏈中間的函數需要大量的配置變量和一些程序狀態變量。我相信將一個或多個論點傳遞給一個函數是一個「解決方案」,但幾乎沒有吸引力。當然,我可以將變量壓縮到單個哈希/字典/關聯數組中,但這看起來像是作弊。
例如,連接到Active Directory以創建新帳戶,我需要配置變量作爲管理用戶名,密碼,目標OU,某些默認組,域等。我必須通過這些參數通過甚至不使用它們的各種功能,只是通過一個鏈最終導致實際上需要它們的功能將它們洗掉。
我至少會聲明配置變量是恆定的,以保護它們,但我最近選擇的語言(Python)沒有提供簡單的方法來做到這一點,儘管食譜確實存在作爲解決方法。
許多堆棧溢出問題已經打到了爲什麼?壞的和必要的迴避,但不要經常提到與這種準宗教限制一起生活的提示。你是如何解決全球變量和計劃狀態問題的,或者至少是和平的?你在哪裏做出妥協?除了圍繞函數的參數成羣之外,你有什麼技巧呢?
好問題 - 您是否將類級變量(成員)分類爲全局變量? – 2010-05-05 15:27:05