close

  老一輩的人會說:『儀容整潔是一種禮貌』,年輕人亦會說:『人不用長得帥,但要有型』,這在在都說明了第一印象的重要性。

  有一次逛街時,一路逛下來,大大小小的店家不知看了多少間,我已經可以預測下一家店面裡大概會賣哪些服飾,腿也酸了,人也累了,新奇感已逐步遞減中。

  這時有一店家令人眼睛一亮,店裡的衣服是依照顏色擺放在不同的區域,紅、紫、綠、藍四種樸素和諧的色系,將店裡渲染出一種如夢似幻的氛圍,不得已又被友人拉進去逛。

  仔細一看,不同色系區域裡的衣服款式竟是一樣的,原來諾大的店裡一共只有五六種款式的衣服,只是每種款式都出了同樣的這四種色系罷了,終於領教到門面佈置的學問。


  做軟體也是需要注重門面、注重第一印象的,使用者不懂軟體、不懂功能,但對於畫面是否好看,可是非常在意的。這是可以不問原因,單憑直覺,一眼就把你多日來連夜加班的心血給否定掉的!

  軟體的門面需要考量到靜態的畫面動態的流程

  這就好像居家佈置,除了要考慮到傢俱擺設的位置之外,還需要考量到抽屜、櫥、櫃、冰箱門是否能被開啟,不然要拿東西時就糗大了!

  更進一步可能會把冰箱放在廚房,碗筷放在餐廳,這是考量到便利性的議題。


  事情如果真的有這麼簡單就好了,怎麼說呢?如果是樣品屋,展售完畢就會拆掉,但居家佈置是會隨著時間有所調整的。

  從新婚夫妻的一切從簡,到小孩出生後到處都是小孩用品與玩具,等小孩長大了之後,對於居家佈置又會有不同的想法。

  實際上甚至不用想這麼長遠,有人三天兩頭就會想改變傢俱的擺設,改變傢俱的位置、方位,藉以換個心情,帶來好運。活動的桌、椅、家電可以搬動,釘死的裝潢想動也沒辦法動。如果以上說的是你,我建議你裝潢可不要做太多啊,免得不滿意的時候沒有任何簡單的補救機會。


  軟體也有類似的現象,demo用的prototype用完就丟,正式版的軟體卻會一改再改。有可能是增加了新功能,畫面不得不跟著變動,也可能只是老闆或客戶太龜毛,三天兩頭就說這裡不夠漂亮、那裡不夠花俏,今天改掉明天又要改回來!

  這時候就要考慮到很多東西不可以寫死,特別是和畫面有關的程式碼,不然可能整段程式碼要拆掉重新裝潢,人力物力double,時程delay。

  現在裝潢流行系統傢俱與組合式傢俱,寫程式用的也正是這一套:模組化、機動化,讓程式更容易拆解與重組


  靜態畫面不只是畫面而已,如果讓我來拆解它,我會把它拆成內容、編排、美工三個元素,且會要求任何一個部份變動時,都不會影響到另外兩個部份的行為。(對了,如果是要做樣品屋,就不需要搞這套了)。

  內容一般就是文字內容。現在流行國際化、在地化,多國語系的支援常常是需要的,總不能每加上一個國家的語系就重做一次畫面吧?

  即使沒有多國語系,實做上也常遇到客戶要求,把顯示訊息改成他們習以為常的慣用語。因此文字內容是要有辦法可以單獨更改,(只要所做的更改是在事先規範好的範圍內),不能破壞畫面的整體性與和諧性。


  動態的流程則分成操作與功能兩個元素。畫面的編排與操作流程常是老闆與客戶最喜歡表達意見的地方,而美工則需要仰賴美術人員來完成,而功能就是寫程式的人要負責的了。

  這麼多人要一起完成工作,自然有其困難度,常見到的現象是,工程師默默辛苦的做,其他人卻在後面放火!這是因為在軟體系統上,不管是什麼工作,最終都是以程式碼的型態呈現。因為是程式碼,很容易就會賴到工程師的頭上了。

  但其實這是有辦法改進的,可以從程式架構或合作模式上著手,讓內容、編排、美工、操作、功能五元素分離,卻又能順暢的結合,而不是互相牽制每個人可以完全為自己的工作成果負責,不用幫別人背黑鍋。


畫面產生器:完美的隔離

  為了將內容、編排、美工、操作、功能等五元素分離,會使用XML或類似script的檔案,來描述內容、編排等個別的元素,再使用畫面產生器把上述檔案統統『吃』進來,根據這些檔案來產生畫面,(如果是要做的網頁則產生HTML語法檔案)。

  使用這種方式,可以把各種元素完美的隔離開來,如果只是要更改文字內容或編排的位置,只需要改XML檔案,不需要改程式碼,當然就不需要懂程式碼囉,這可以讓每個人有能力做自己應該要做的事情,不會越俎代庖,發生問題時就不會找錯人負責了。


  但這種方式有兩個難題,第一,產生器會很複雜,因為他要應付的狀況實在太多了,要很細心的預先考慮到各種常發生的與不常發生的狀況,都要能夠適當的處理。

  第二,因為各種狀況太多了,多的數都數不完,因此常常要將狀況限制在某些範圍之內,例如:名字只能五個字以內。沒想到人是善變的,可能突然某一天,客戶要你支援十個字的名字,原因可能只是因為客戶的朋友中有一位外國朋友,外國人的名字翻譯成中文之後,都特別的長,例如:威廉·傑佛遜·柯林頓為美國的前任總統。

  產生器都已經這麼難寫了,如果規格還三天兩頭的變來變去,那工程師還有時間做別的事情嗎?


畫面編排工具:所見即得

  畫面產生器的確很完美的將各個元素隔離,但這真的是我們所要的嗎?不是的!我們只是要讓上司(客戶)、美工、工程師能夠各司其職,完成各自的工作,並順暢的將所有人的工作成果天衣無縫的結合起來,或者說根本不用特別去注意『結合他們工作成果』這件事。

  既然如此,Delphi、JBuilder、Visual Studio這類的畫面編排工具,雖然還不夠,但已經有點接近了,因為他可以協助我們很容易的改變元件的位置、顏色、大小、文字等屬性。


  我一直在幻想什麼時候可以做出完全的畫面編排工具,讓所有人能夠各司其職,不要在互相抱怨了。也曾一度想使用FLTK來進行這項計畫,因為FLTK是跨平台的,在Windows做的畫面可以在Linux上跑,不會有適應不良的情況。不過真的有點難度就是了。


更多「程式設計」文章:

  [分享] 程式設計寶庫,範例程式搜尋引擎

  最具殺傷力的小BUG

  最尷尬的『不恰當』,程式設計經驗談

  寫程式會從哪邊下手? (問券調查)

  寫程式到底需不需要懂數學?

更多「物件導向」文章:

  繼承是父子關係?才怪! 物件導向初學者應該要知道的事情(四)

  到底誰該去繼承誰? 物件導向初學者應該要知道的事情(三)

  為什麼我找出來的物件都是UI物件? 物件導向初學者應該要知道的事情(二)

  要如何找出物件呢? 物件導向初學者應該要知道的事情(一)

  [預告]: 物件導向初學者應該要知道的事情

arrow
arrow

    牛奶 發表在 痞客邦 留言(0) 人氣()