让接口容易正确使用且难以错误使用
件开发中最常见的一项任务便是接口规范了。接口遍布于抽象的最高级(用户接口)、最低层(函数接口)以及中间的层次(类接口、库接口等)。不管你的工作是指定用户如何与系统交互,与开发人员指定API,或者是声明类的私有函数,接口设计都是工作的一个重要部分。如何做得好,你的接口用起来很舒服,而且会激发他人的产出;如果做得不好,你的接口会成为失败和错误之源。
好的接口会:
容易正确使用。人们在使用设计良好的接口时,几乎总是能正确使用,因为这时使用最顺畅。界面的话,他们几乎总能点击到正确的图标、按钮或者菜单入口,因为那是最明显、最简单的事情。API的话,他们几乎总是传递正确的参数的正确的值,因为那是最的。通过容易正确使用的接口,一切顺利。
难以错误使用。好的接口会预测价位可能犯的错误,并且让他们难以,理想是不能,继续。GUI的话,可能会禁用或者移除当前上下文中没用的命令;API可能会通过允许以任意顺序传递解决参数的顺序问题。
设计容易正确使用的接口的一个好办法是在它们存在之前就使用他们。制作一个GUI模型,可以是在白板上或者桌面上使用索引卡,在任何下层代码创建之前使用它。在函数声明之前就写出API的调用。练习一般的使用的场景并指明你希望接口如何表现。你想要在什么上面可以点击?你想要什么可以传递?容易使用的接口看起来很自然,因为它们让你做你想做的。如果你从用户的视角来开发它们,就更可能产生这样的接口。(这种视角是测试先行编程的一种优势)。
让接口难以错误使用需要两点。首先,必须预测用户可能产生的错误,并找到办法阻止它们。其次,必须观察早期的发布版本中,接口是如何错误使用的,并且进行修改。是的,修改接口来防止这种错误!阻止不正确使用的最好办法是让这种使用成为不可能。如果用户一直要撤消某个不可撤消的操作,尝试让这种操作可以撤消。如果他们一直给一个API传递错误的值,修改API以尽量接受用户希望传递的值。
最重要的,记住接口存在的意义是方便它们的使用者,而不是实现者。
原文:Make Interfaces Easy to Use Correctly and Hard to Use Incorrectly by Scott Meyers