Unix編程藝術——介面

來源:互聯網
上載者:User

最小立異原則
     如有可能,盡量允許使用者將介面功能委派為熟悉的程式來完成

     不能委派時,那就效仿


介面設計評估
     簡潔:          一個交易處理需要的動作時間及複雜度需要較低的上限     表現力:       介面可以觸發相當廣泛的行為     易用:          易用性同要求使用者需要記憶的東西成反比     透明:          使用者在使用介面的時候,幾乎沒有什麼問題、資料或程式的相關狀態需要記憶     指令碼化能力:很容易被其他程式調用
CLI和可視介面之間權衡
     CLI:豐富的表現力,高度的指令碼化能力,易用性低(需要費勁的記憶),透明度通常也較低
     GUI:易用,不能指令碼化,處理規模大的問題需要機械性重複操作
     長遠來看,為了既能服務一般使用者,又能服務有經驗使用者,最好兩種介面都提供。
Unix介面設計模式
1. 過濾器模式
程式接受標準輸入,轉換為某種格式後,再輸出到標準輸出。過濾器是非互動的。
執行個體:grep,tr
原則:Postel原則,寬進嚴出;過濾的時候,不需要的資訊也絕不丟棄;不增加無用資料。
2. Cantrip模式
程式沒有輸入,沒有輸出,只被調用一次,產生退出狀態代碼。程式的行為只由啟動條件來控制。
執行個體:clear,touch
3. 源模式
程式不需要輸入,輸出由啟動條件決定
執行個體:ls,ps,who
4. 接收器模式
程式只接納標準輸入,而不產生標準輸出。對輸入的行為由啟動條件決定。
執行個體:lpr
5. 編譯器模式
程式既沒有標準輸入,也沒有標準輸出,但是會將錯誤發到標準錯誤端。
執行個體:gcc,gif2png,gzip
6. ed模式
程式具有很強的互動性。
執行個體:gdb,ftp,sh
7. Roguelike模式
運行在控制台的全屏、視覺化介面風格,但使用字元陣列顯示,而非圖形和滑鼠介面。
執行個體:vim,emacs
8. 引擎和介面分離模式
模型、視圖、控制器模式
幾個變種:配置者/執行者組合(fetchmail/fetchmailconf),假離線/守護進程組合(at/atd, lpr/lpd),驅動/引擎組合,用戶端/伺服器組合
9. CLI伺服器模式
程式以前端模式出發時,有一個簡單的CLI介面讀取標準輸入並寫標準輸出;以後台方式運行時,將stdin和stdout串連到專門的TCP/IP連接埠。
執行個體:POP, IMAP, SMTP, HTTP
10. 基於語言的介面模式
GUI前端同CLI微型語言後端結合,程式往往擁有一個的內嵌指令碼語言。

網頁瀏覽器作為通用前端

沉默是金:喋喋不休的程式往往不能跟其他程式很好的合作,使用者螢幕的縱向空間是寶貴的,垃圾資訊對使用者頻寬的無謂消耗。,
長時間的操作要提供進度條。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.