通常我們把想不明白的事情用這句話表達比如前台的MM怎麼會看上那個小子???哎蘿卜青菜各有所愛啊!
我喜歡反過來看事情為什麼不管吃蘿卜還是青菜都采用同一種端碗提筷子的手法但是不同的人居然還各自找到各自的滿足?
讓我們帶著思考回到程序這個話題程序是否可以滿足這樣的特性總是那一套程序但是在不同的場景下由於吃的數據不同表現出不同的口味讓大家都滿意?
好吧這貌似有點難讓我們用一個小程序理理思路
你需要管理一批庫存材料材料方面我們簡單起見只有價格這一個屬性
老板要求需要知道所有材料價值多少另外單個材料大於元的屬於貴重材料挑出明細列出來
這難不倒你三下五除二把程序做好了運行了幾天沒問題老板卻說我覺得大於元也許才算貴重你改改吧!
改個數字並不難你修改了代碼程序繼續運行
哦 稍等!讓我們停一停這個敘述太過於常規太流暢了我們回到更為一般的角度再看看也就是說老板下次改成元以上才算貴重我們還得修改代碼或 許你要說我很擅長改這個木有問題!(我知道你只改個數字當然很自信!)但是永遠不要忘了我們極大的簡化了問題材料只有價格這唯一的屬性真實的 情況下邏輯和條件都會隨著考慮因素的加入而呈指數級增長!
如果這個時候你想到的是設計模式說明你還在徘徊!如果你想到了配置文件可以說你終於開始體會到一點點數據的好處了有那麼點意思了!讓我們繼續
增加了配置文件把某個昂貴標准寫入了配置文件每次老板說要改修改一個xml就行了!
程序運行了很久老板是個變態期間讓你修改了好幾百回這個價格!
讓我們再停一停這個敘述中你發現配置文件雖然把數據獨立出來卻並沒有解脫你這很關鍵
其實不是老板變態而是這個問題放到你身上你也不能一次把價格定下來因為但凡是個比較意義上的詞匯(比如這裡的貴重)都是沒譜的!
我們需要從程序層面突破思維的障礙那麼障礙是什麼呢?其實人總是認為一個靜態的概念一定是靜態的!正如這裡的貴重它一直在變誠然在具體的某個時間點上它是個數字但是它真的一直在變(我反復強調它在變你看到了麼?)
來吧我們繼續
在軟件上增加個人中心讓老板自己填一個數字他說多少算昂貴它就是昂貴!
這解決了很多問題甚至老板關心元以上的主管關心元以上的組長關心元以上的它們各自獨立配置各自得到自己想要的結果!
我 們總結一下原來是程序裡的代碼邏輯驅動軟件你寫它就按執行(可不僅僅是篩選數據這麼簡單哦也許還涉及到分支判斷就能感受到一個數字的 大不同了!)但是現在呢?程序不變了存儲了用戶和閥值之間的配對數據遇到什麼樣的人就按什麼樣的數據驅動軟件!
千萬不要覺得填寫個性化選項太正常了要理解變化的產生是由於變化本身變化的解決方案就是讓軟件自由變化這種思想蔓延開來就能撥開雲霧見青天!
稍等一下我稍微深入的再啰嗦幾句通常我們的系統不會簡單到只有價格這一個維度的那麼錯綜復雜的數據和條件老板怎麼可能配置的過來?
還是那句話人總是認為一個靜態的概念一定是靜態的!正如這裡的軟件它一直在變誠然在具體的某個時間點上它是具體存在的但是它真的一直隨著數據而隨時隨地的變化
可能剛開始時你沒有篩選出昂貴的功能只有一個按價格倒序分頁的功能
隨著老板的使用你發現他只看到第頁而第頁大約就是元的標准於是對他來說關心的昂貴就是為標准
隨著他的繼續使用可能慢慢只看第一頁了而第一頁是元的標准於是整個程序對他來說很自然的切換到為標准
這是一個從行為到數據積累潛移默化的過程!千萬記住軟件由數據驅動數據無時無刻不在變化軟件不是一個靜態的概念!
於是無論數據多麼復雜都是和整個系統相輔相成的來的很自然用的也會很自然!
最後我想說一說類似哲學上的事情任何事件的發生都是有原因的一只小小的蝴蝶可以引發蝴蝶效應!所以牢牢的把握住數據利用它們驅動軟件利用它們的變化提升軟件因為業務的變化早就在數據上反應出來而軟件由數據驅動你甚至根本不用修改軟件
試試吧又不會懷孕
From:http://tw.wingwit.com/Article/program/Web/201405/30788.html