[转]绘制交互流程图

学习产品设计初期肯定会遇到两个问题:第一,如何考虑更全面;第二,如何绘制交互流程图。开始产品设计前先要考虑所有可能性,如何才能以线性流程图的方法组织所需的设计元素。小郑老师的《交互设计表格》中已经介绍了非常实用的表格穷举法,适合初学者使用。

流程图是产品经理和交互设计都必须掌握的技能,一张流程图可以省去需求文档和交互设计文档的很多文字描述,让技术人员一目了然地明白设计意图,便于组织程序的逻辑顺序。

绘制流程图准从简单的原则,流程图是设计师的产出物,体现设计意图,主要给技术人员和测试人员浏览,至于自己是如何思考不应体现在流程图中。别人也要早点回家被老婆,没有时间关心你如何的细心的考虑,也不关心用户会如何思考和操作的,请直接给他们展示设计的结果。

复杂和纠结留给自己,简单留给别人。对用户是这样,对工作同伴也是如此。 Read the rest of this entry »

《Effective C#》每天一条(07) – 值类型应表现为具有常量性和原子性

为什么?

具有常量性的类型可以保证其内部的正确性,而且也确保了线程安全。构建具有原子性的值类型有助于实现其常量性。 Read the rest of this entry »

《Effective C#》每天一条(06) – 明辨值类型和引用类型

“正确的选择依赖于我们期望将来的客户程序如何使用我们的类型”

区别

我们在创建复合类型的时候,可以选择struct或class。

struct是值类型,不支持多态,比较适合存储应用程序操作的数据。值类型在内存上存放在栈上,因此比较适合体积较小的轻量级类型。

class是引用类型,支持多态,比较适合存储业务数据或定义行为。引用类型在内存上存放在堆上,因此实际使用时需要付出堆内存分配、解析和垃圾回收的代价,适合体积较大使用较不频繁的类型。 Read the rest of this entry »

《Effective C#》每天一条(05) – 提供ToString方法

“我们创建的每一个类都应该重写来自基类Object的ToString()方法。”

为什么?

很多地方都需要对象通过ToString()方法输出有关信息,包括在Windows Forms、Web Forms以及控制台输出窗口中。如果我们能按需要重写该方法,该方法就可以有助于调试环境和记录运行信息,比只输出类型名要有用很多。如果我们还实现IFormattable.ToString()方法,我们还可以实现多种自定义格式的、灵活的可读信息输出。

Read the rest of this entry »

《Effective C#》每天一条(04) – 使用Conditional特性代替#if条件编译

为什么?

  • #if/#endif来自较老的C/C++语言,Conditional特性来自于C#,编译器同样会在编译时处理Conditional特性。
  • Conditional特性应用在整个方法之上,而#if/#endif条件语句则可以应用语句上。由此可见Conditional特性要比#if/#endif表现得清晰,也更为严谨。
  • Conditional特性有效避免程序主逻辑代码与调试代码的混淆。
  • 应用Conditional特性的代码产生的IL代码更有效率。

Read the rest of this entry »

《Effective C#》每天一条(03) – is或as优于强制转换

“正确的选择是尽可能地使用as操作符……”

为什么?

使用as比用(T)强制转换更加安全,因为转换失败不会引发异常,而是返回null值,用户可以先判断其结果是否为null再进行处理。其次使用as转换效率也会更高,因为使用as转换时会忽略自定义转换操作,从而简化转换过程。 Read the rest of this entry »

Meta