软件开发中,分析和设计时,文档的编写和思想的交流,常常要绘制各类各样的图。函数
相对于人类的天然语言,描绘复杂结构,图具备直观和总体的特征,有着不可替代的表现力。布局
软件开发是创造性的劳动,开发人员几乎在每一分钟都要作出某些选择,每个选择都好像决定着最后的结果。spa
绘图的时候也是如此,脑中有完整或不完整的想法,要清晰的表现出来时至关不容易。设计
事实上,许多老手都不会画图。对象
在实践的过程当中,总结了一些经验,得出了一些结论。开发
若是简单的文字就能说得很清楚,还画图干什么!文档
对代码级别的细节,不要画图来表现;编译
不要借助图来让你的文档得变大;画蛇莫要添足。软件
软件是一个多层的东西,一个图只展示恰当抽象层次之上的细节。循环
一个过细的图,大量的信息会掩盖真正重要的东西。
好比:在一个流程图上,不须要把“文件打开的错误判断”也做为一个分支画在图上,除非你“无聊到”要强调这个显而易见的异常处理;
若是一个图上包含上百个对象,看起来不舒服,应该化整为零,使用多个图,每一个图描述不一样的部分。
图传递的信息应该明确,无歧义。
必定要明确图中的各个组成元素都是什么东西,整个图要表现什么。
尽可能使用规范的图。好比:
我据说:书写大幅的毛笔字,特别讲究布局。
一样道理,画软件图,尽可能密度分布均匀,减小连线的交叉。
为了减小连线的交叉, 一样的单元能够在图中出现屡次。
使用UML有三种方式:
Martin Fowler说:使用UML绘制草图的人,真正关注UML的精髓(大师就是大师,说话就是不同)。
所谓“不足胜有余”,无论什么图,图应该集中表现其关注的方面,恰当的忽略一些细节时必要的。
类图中,每每没有必要包含类的全部函数合成员说明;
在表现对象之间协做的顺序图中,大多时候也没有必要表现存在的分支和循环。
上面的全部道理,也并不是是不变的真理。
可是,道理被打破之前,你应该了解它,熟悉它,批评它,忘记它(追求相似张三丰太极剑的境界)。
古人云:事有反道而适权,伪经而和道者。
笑傲江湖说:独孤九剑,无招胜有招。
萧大侠:删繁就简,取精用宏。
规劝朋友也规劝本身:连有招的境界还没有达到,应该知道本身该作什么。