艾德賽爾.福特二世是這麼評價他曾祖父的事業:“我們要慶祝的與其說是一款車,不如說是一種概念,一種為普通百姓提供個人出行工具的概念。我的曾祖父不僅有這樣的遠見,而且堅持了他的遠見。在福特汽車公司的頭5年時間裡,他就是這麼做的,想當年他曾按字母順序試遍了各種車型,最終找到了苦苦追尋的T型車。之後19年間,他堅持生產高質量低成本汽車的目標,不斷改善產品和工藝。”自1908年10月1日至1927年夏天停產,亨利.福特的T型車共售出1, 500多萬輛。他的成功之門在於 -- 流水線。
用OO思想來看待頁面設計
ASP時代中,我們習慣於在網頁設計師所提交的HTML文件中插入必要的腳本代碼;更被推薦的方法是利用頁面與代碼分離技術,網頁設計師在Html文件插入事前約定的自定義標簽,程序員用正則表達式匹配、然後用動態數據替換自定義標簽。即使所有的工作都由您一個人來,把復雜的工作分解成簡單的問題也會讓你的效率大大提高,有如流水線--在一個時段內,只關注一件事。
讓我們來回憶一下頁面裡會有什麼?許多人會說內容、修飾和交互表單。ASP.Net要求你這麼來看待頁面:
·每一個頁面是一個Web FORM ,包括一個<form runat="server">;
·拖放控件加入各種元素;可以用Property浏覽器定義控件和屬性;
·可以為控件添加事件處理程序。
ASP體系中,我們以前需要定義網頁<form>的 提交對象,可以提交給本身,也可以提交到其它頁面處理,如我們時常用 login.asp(提交) -> check.asp(審核) -> index.ASP(進場)這個跳轉過程來完成登錄操作。這是一個結構化的編程思想;現在我們要用面對對象的編程思想來考慮:把登錄功能當作著一個整體即對象,它包括頁面表現(由用戶名輸入框、密碼輸入框和提交按鈕三個控件組成)和頁面交互(審核事件處理程序)。這也是為什麼<form runat="server">不需要確定提交對象的原因。
用XHtml+CSS來設計頁面?
用純粹OO思想來看,ASP.Net把每個控件的表現(顏色、字體大小之類的東西)作為屬性是非常合適的,當然它也允許用CSS來定義它的外觀,把所有的操作集成在同一個IDE中也變得更加快捷。
但有趣的是,W3C標准主張把網頁的內容(Html)、表現(CSS)和腳本分離成三個獨立組成部份,其最顯著的特征是強調網頁內容是有結構的,要用<DIV>、<span>、<ul>等結構標簽來定義。但W3C的這種思想恰恰與MS軟件工程師們的OO思想相背離,他們認為網頁表現只是一件簡單的事情,沒有必要折騰得那麼復雜,用panel控件(實際上就是<div>的變體)來定義網頁內容的結構完全足夠,在網頁中加入看不到的結構標簽破壞了他們的OO構想。
自從看了Jeffrey Zeldman在2003年出版《Designing With Web Standards》後,我從心底裡是贊同並且身體力行W3C標准,不喜歡VS自動生成的Html控件裡充滿了各種各樣的屬性,龐大而又混雜,對比之下W3C標准的產品簡約而又結構明晰。VS是用軟件工程師的眼光來看待網頁設計,重內容而輕表現,所以力圖把頁面設計簡化。而Macromedia倒更象一個由藝術家唱主角的公司,盡管它一直試圖努力推行它的網頁設計理念,但感覺仍然是重表現而輕內容,所以DW用來做網頁設計倒很順手。
引申出個話題,軟件工程師的地位往往要高於網頁設計師,時常聽到美工在小聲地嘀咕其作品是如何被XX的,如果未來世界的所有網站一如MSDN,那真是乏味得很!正如女人內涵是非常重要的,但大多數男人是先看看你美不。或許只有象德國一樣,讓流水線上的每位工人都是專家正是其產品品質優良的保證。