Learning Style在CD中是没有的,微软将这个维度引入了进来,它的解释为: What are the learning requirements posed by the API, and what are the learning styles available to a targeted develper. 开发者用API是来完成一些列的任务的,那么以下两种不同的完成方式确定了不同的学习风格。 如果开发者完成任务需要少量的接口,并且每个接口之间相互依赖的程度较低,那么我们说API支持一种渐进的少量的学习方式。 也就是说,开发者仅需要里了解与自己任务相关的接口,并且通过循序渐进的方式进行学习。 如果开发者完成任务需要大量的接口,并且每个接口之间关联复杂,那么我们说API需要一种由上至下或者一种结构化的学习方式。 也就是说,在用API完成任务之前,开发者需要了解API不同的接口以及它们之间的关联关系,同时可能还需要了解整个API的结构和其他一些新概念。 再拿百度地图API来说,如果开发者想创建一个简单的地图,他需要了解如下内容: 如何引用API(加载JavaScript)。 地图坐标和级别的概念。 知道通过BMap.Map类创建地图实例,并且通过centerAndZoom方法进行初始化。 知道通过BMap.Point类创建坐标实例。 可以看出,地图API的学习风格接近于第一种,属于渐进式的。开发者仅需要了解少量的接口和一些概念就能完成任务了。 不同的开发者可能喜欢不同的学习方式,比如有些人喜欢渐进式的,希望编写少量代码就能立刻看到成果,在此基础上逐步学习API中的其他接口。 另外一些开发人员希望在使用API之前能从一个较高的层次上了解其架构,喜欢从整体把握,接着再寻找解决任务的最佳方案。 在一套API中,两种不同的学习风格可以共存 Working Framework What is the size of the conceptual chunk needed to work effectively. 该维度描述了开发者在使用API的过程中需要了解(keep track of)的信息量有多少,即开发者使用API时的工作框架是什么样的 比如,在通过BMap.Map类创建一个地图实例时,开发者可以指定地图所使用的坐标系统是经纬度还是墨卡托,一旦确定下来并创建地图后。这个坐标系统就是开发者需要了解的信息。 如果在后续开发中,需要添加一些标注、折线到地图上,开发者就要保证标注、折线的坐标与地图当前的坐标系统一致,否则程序就会出问题。 在API中,working framework的形式主要有以下三种: 如果信息可通过API本身来表示,那么工作框架是本地(Local)式的。 如果信息不通直接通过API来表示,但是可通过开发者的代码结构体现,这时工作框架是全局(global)式的。 如果信息既不能通过API本身来表示,也不能在代码结构中体现,那么工作框架是系统(system)式的。 不同的开发者可以适应不同的工作框架模式,只要在他们的可接受范围内就行。 Work Step Unit How much of a programming task must/can be completed in a single step. 这个维度描述了开发者完成特定任务所需要的步骤有多少,可以简称为工作单元 比如用户想在地图上添加自定义的标注,这个任务可通过以下三个步骤(不包含地图创建过程)完成: 创建一个图标对象。 创建一个标注,并设置其图标。 向地图添加标注 下面我们将详细描述每一个步骤开发者需要做哪些事情。这些事情包括一个代码块的编写或者创建了多少个类以及一些其他相关的工作。对于上面的例子,我们可进行如下描述:
经过上面一番描述,API的工作单元可通过如下方式描述: 如果用户编写的代码包含在一个本地的代码块中,并且代码可以递增式的完成,那么工作单元可描述为本地递增式(local incremental)。 如果用户编写的代码包含在多个代码块中,或者代码需要多个类来交互完成,那么工作单元可描述为并行式(parallel)。 如果用户编写的代码既不是本地递增式也不是并行式,而是处于一种中间状态,那么工作单元可描述为功能式(functional)。 可以看出创建自定义标注的过程是本地的递增式的 Progressive Evaluation To what extent can partially completed code be executed to obtain feedback on code behavior? 这个维度描述了开发者在编写每个任务的过程中,是否很容易的停下来并检查自己的进度完成情况。 如果开发者在写完每一行代码就能够停下来评估进度,那么API支持单行代码级别的评估。 如果开发者在写完两个或更多任务的代码后才能评估自己某一项任务的进度,那么API支持功能级别的评估。 如果开发者需要同时使用多个类,并要求类之间的状态要保持某种一致性,这样才能查看自己的工作进度,那么该API支持并行模块级别的评估。 我们还拿上面添加自定义标注的任务来举例,它最接近第二种情况。因为在创建icon和marker实例后,开发者并不能看到目前已经编写的代码是否OK,他/她需要执行第三个步骤, 即把标注添加到地图上之后才能看到整体的代码是否正确。