軟件開發中,分析和設計時,文檔的編寫和思想的交流,常常要繪製各類各樣的圖。函數
相對於人類的天然語言,描繪複雜結構,圖具備直觀和總體的特徵,有着不可替代的表現力。佈局
軟件開發是創造性的勞動,開發人員幾乎在每一分鐘都要作出某些選擇,每個選擇都好像決定着最後的結果。spa
繪圖的時候也是如此,腦中有完整或不完整的想法,要清晰的表現出來時至關不容易。設計
事實上,許多老手都不會畫圖。對象
在實踐的過程當中,總結了一些經驗,得出了一些結論。開發
若是簡單的文字就能說得很清楚,還畫圖幹什麼!文檔
對代碼級別的細節,不要畫圖來表現;編譯
不要藉助圖來讓你的文檔得變大;畫蛇莫要添足。軟件
軟件是一個多層的東西,一個圖只展示恰當抽象層次之上的細節。循環
一個過細的圖,大量的信息會掩蓋真正重要的東西。
好比:在一個流程圖上,不須要把「文件打開的錯誤判斷」也做爲一個分支畫在圖上,除非你「無聊到」要強調這個顯而易見的異常處理;
若是一個圖上包含上百個對象,看起來不舒服,應該化整爲零,使用多個圖,每一個圖描述不一樣的部分。
圖傳遞的信息應該明確,無歧義。
必定要明確圖中的各個組成元素都是什麼東西,整個圖要表現什麼。
儘可能使用規範的圖。好比:
我據說:書寫大幅的毛筆字,特別講究佈局。
一樣道理,畫軟件圖,儘可能密度分佈均勻,減小連線的交叉。
爲了減小連線的交叉, 一樣的單元能夠在圖中出現屢次。
使用UML有三種方式:
Martin Fowler說:使用UML繪製草圖的人,真正關注UML的精髓(大師就是大師,說話就是不同)。
所謂「不足勝有餘」,無論什麼圖,圖應該集中表現其關注的方面,恰當的忽略一些細節時必要的。
類圖中,每每沒有必要包含類的全部函數合成員說明;
在表現對象之間協做的順序圖中,大多時候也沒有必要表現存在的分支和循環。
上面的全部道理,也並不是是不變的真理。
可是,道理被打破之前,你應該瞭解它,熟悉它,批評它,忘記它(追求相似張三丰太極劍的境界)。
古人云:事有反道而適權,僞經而和道者。
笑傲江湖說:獨孤九劍,無招勝有招。
蕭大俠:刪繁就簡,取精用宏。
規勸朋友也規勸本身:連有招的境界還沒有達到,應該知道本身該作什麼。