1、 **規模:一般就是**的函式。
2、 實現複雜度:程式設計師為了理解乙個程式從而建立其思維模型並除錯該程式的困難程度。
3、 介面複雜度:主要是和使用者介面的複雜度,比如使用者介面,功能,操作等。
面對上面三個複雜度比較陷入三個陷阱:
1、 manularty(人力尺度)陷阱:主要是為了避免介面複雜度,而把許多底層人物拋給使用者。
2、 blivet(硬撐)陷阱:主要是為了避免**量複雜度,而使用極端晦澀複雜的演算法。
3、 adhocity(過專用)陷阱:為了避免實現複雜度,不採用統一但是有些複雜的方案,而對每個問題都編寫重複,專用的**。
介面複雜度和實現複雜度的折中。所謂魚和熊掌不可兼得,這兩者是有衝突的地方。很多時候可以犧牲其中的一種複雜度而獲得另一種的簡單。有乙個問題,就是該犧牲那個複雜度來換取整體的複雜度?
沒有標準答案,重要的是培養斟酌每一種設計的習慣。
Unix介面設計模式 unix程式設計藝術學習筆記
1 過濾器模式 接收標準輸入,然後轉化為標準輸出。把自己當成乙個過濾器。使用時的原則 寬進嚴出,不需要的資訊也絕不丟棄,絕不增加無用資料。比如grep。2 cantrip模式 沒有輸入,沒有輸出,只呼叫一次,引數狀態值,然後退出。比如rm。不需要互動。3 源模式 不需要輸入。比如ls。4 編譯器模式...
微型語言的設計 unix程式設計藝術學習筆記
軟體的缺陷率和使用的語言無關。我曾經設計過乙個機遇xml的微型語言。另外,xtest專案讓我向設計乙個全新的,類似於真正語言的語言,而不是簡單的標記語言。在學習這一章的時候,結合整xtext一起學習一下。發現xtext有乙個問題,它只可以執行的jvm上。我想設計一種dsl,我可以自己編寫它的直譯器。...
介面設計評估 unix程式設計藝術學習筆記
這裡的介面,更多的指的是對使用者的介面。介面的五個特性 1 簡潔 指乙個事務處理需要的動作時間及複雜度有較低的上限。2 表現力 介面可以出發廣泛的行為。3 易用性 使用介面需要記多少東西?4 透明性 使用者動作的效果,能夠自然的給出中間結果,反饋,錯誤通知。程式的執行是透明的,使用者知道執行的狀態。...