程序设计方法与艺术复习提纲
- 格式:doc
- 大小:33.50 KB
- 文档页数:4
程序设计方法与艺术1、软件的演变过程及特点、理论学家的观点、现实是什么软件的演变过程:机器语言、FORTRAN语言、数据库语言、智能语言、可视化的面向对象语言欧洲派:编程是一门数学味儿很浓的工程学科、美国派:编程序很简单。
现实是:1、软件工程也不要求所有程序员都是受过高等教育的科学家。
2、程序员可以无绪也能产生可靠的软件系统。
无绪是指程序员不需要深入了解很多内容,就可以写出好的代码3 找到一种编码实践方法,让开发人员不用深入了解所有事情。
2、大型软件特点、开发与设计方法、推土机方式现在大型软件特点:1、基于大型组件进行组装2、先安装一个可靠又低廉的操作系统3、安装Web服务器和数据库服务器4、应用程序编写简单5、系统复杂、完全了解整个系统的全部内容很少。
6、无绪状态软件开发更好的无绪:推土机方式。
推土机方式的系统:需要什么安装什么1 、需要什么安装什么: 数据库、Java平台、应用服务器加内存2 、系统越来越大,但效率也很高3 、Web 系统上,有大量的系统是采用这种推土机方式建立。
3、软件开发理论上的目标和要求,软件开发无绪真实、漂亮和优雅4、分布式开发方法、特点、开源代码开发及特点无绪的模型、组件模块重用、开发周期短、用API来完成接口调用、多类库组成分布式开发特点:整个程序的源代码多人控制、产品的开发进度无法全面掌控、全面掌控往往只是一种理想状态、版本自由选择开源代码的特点:免费、使用和获取方便、有充足的资源使用、安全有保障5、模块化应用程序开发及特点、版本管理相关内容多版本同时使用6、API及使用特点,不同软件版本的特点一个API是一堆类以及类方法和字段(属性)的集合。
对所有公开成员访问,只需要访问相应的名称;对非公开成员访问,一般使用反射技术来创建对象时,不需要知道具体类型,只需要的话字符串的方式传入类的全名即可创建一个实例对象。
反射是直接读入dll或者对应的库,反射机制是取出模块中所有的中间语言代码7、部署图及应用部署图对面向对象系统的物理方面建模,描述系统运行时节点、构件实例及其对象的配置。
现代远程教育“设计”复习大纲课程内容第1讲.序论第2讲.数据与运算第3讲.语句与分支控制第4讲.句第5讲.过程与函数(上)第6讲.过程与函数(下)第7讲.数组与常用算法第8讲.常用控件第9讲.绘图、窗体与菜单第10讲.复杂界面第11讲.文件、程序调试第12讲.API及多媒体编程 *第13讲.数据库编程 *第14讲.网络编程及其他 *第15讲.复习关于考试考试内容以讲课的PPT内容为主,第1-11讲都属于考试内容。
●第1-7讲是基本知识和基本编程技术,所占比例为80%●第8-11讲是基本应用,所占比例为20%●第12-14讲是深入应用,在笔试中不考,可以体现中平时的作业练习之中。
考试题型为:一、选择(30分,每空1分) (单选题,选择最合适的答案)二、填空 (45分,每空1.5分)三、分析(20分,每空4分)(分析程序,选择正确的选项)四、改错 (5分)如何复习主要看PPT内容,同时看参考书。
通过上机练习PPT中的实例巩固所学知识。
对于程序题,其深度要求不会超过讲过的内容,参见复习重点复习时,要着重掌握以下三方面的内容:(1)常用运算符、常用函数、常用控件的属性、方法和事件;(2)常用的语法要素:变量定义、分支及循环控制、子程序及函数、数组;(3)常用的算法与应用:要求能分析一段程序的流程及运行结果。
下面列出各讲中的重点:试题样例一、选择(30分,每空1分) 选择最合适的答案。
1.表达式Mid(“Hello”,2,3)的值是_________A “ll”B “llo”C “ell”D “ello”2.若要设置定时器控件的定时时间,需设置的属性是_________A IntervalB ValueC EnabledD Time3.为把焦点移到某个指定的控件,所使用的方法是_________A SetFocusB VisibleC GotFocusD Enabled二、填空 (45分,每空1.5分):1.如果要将某菜单项设计为分隔线,则该菜单项的标题应设置为______2.在窗体上画一个红色的圆,将以下语句填完整Circle (100,100),100,_________3.以下程序的输出结果是:______n = 0Do While n=2n = n+1Loop4.表达式Len(“abc”) 的值是_________。
第二章程序设计初步
1、程序的概念:是由人根据一定的需要事先编写的一系列控制计算机工作的
命令。
2、现代电子计算机之父:冯﹒诺伊曼
3、程序设计语言可以分为机器语言、汇编语言、高级语言。
注意:只有机器语言能够直接被计算机识别
4、用VB创建程序的时候,程序的代码是输入到代码窗口里面。
5、数据类型:数值型(如:123)、字符型(如“广州市”、“123”)、布尔型
(又称逻辑型,它的值为“True”或“False”)
6、常量与变量
(1)常量:在程序运行过程中始终固定不变的量。
(2)变量:在程序运行过程中取值可以变化的数据。
(3)变量的命名规则:注意一点的是VB中专用的保留字不能作为变量。
(如:Print, Sub , End, Form_Click等等)
7、表达式包括:
(1)算术表达式:由+、—、*、\ (整除)、/(除)、^(乘方)、Mod (求余)
(2)字符串表达式:运算符“&”和“+”。
5、函数
(1)绝对值函数—— abs(x)
(2)算术平方根函数——Sqr(x)
(3)取整函数—— Int(x)
(4)随机函数—— Rnd(x)
6、赋值号“=”与数学中的等号是不相同的。
7、程序设计的三种结构:顺序结构、分支结构、循环结构
8、语句
赋值语句:“=”
画圆语句:“Circle”
输出语句:“Print”
条件语句: if – then – else (分支结构)
循环语句: for – to– step – next(循环结构)。
《程序设计技术B》复习提纲(2013)第1章C语言与程序设计1.学习“C语言程序设计”主要包括哪两个方面?语法规则、程序设计方法;2.计算机解题的过程大致分为哪四个阶段?分析问题、设计算法、编写程序、运行验证;3.什么是算法?算法有哪些表示方法?传统流程图的常用图形符号有哪些?4.结构化程序设计思想的要点是什么?有哪三种基本结构?自顶向下、逐步求精;顺序、选择、循环;5.习题一:一题第2章C语言基本概念6.C程序的构成?C语句以什么结束?如何为程序加注释?一个main函数和若干其它函数;7.何谓关键字?ANSI C定义的关键字有哪些?语言中被赋予特定含义的单词符号;32个……8.什么是标识符?标识符的命名规则?程序中的变量、符号常量、数组、函数、类型、文件等对象的名字;在C语言中,标识符只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线;9.C语言的基本类型有哪几种?写出类型名?整型、浮点型、字符型、枚举型;int、float、char、enum;10.什么是常量?什么是变量?C语言中有哪四种常量,如何表示?整数常量、浮点数常量、字符常量、字符串常量;11.C语言的变量要“先定义,后使用”,如何定义变量?变量有哪3个要素?变量名、存储单元、变量值;12.掌握常用的运算符(算术运算符、赋值运算符、逗号运算符、条件运算符、关系运算符和逻辑运算符)的运算优先级和结合性以及表达式的计算过程?13.了解混运算时数据类型的转换?14.习题二:一题第3章程序控制结构15.C语言语句可以分为哪五种类型?达式语句、函数调用语句、控制语句、复合语句、空语句;16.赋值语句的一般形式?赋值语句的功能?什么情况下要使用赋值语句?17.掌握字符输入输出函数:getchar()和putchar()的使用?18.掌握格式输入输出函数:scanf()和printf()的使用?格式说明:%d、%f、%c和%s的含义?19.掌握if语句和switch语句的语法结构和使用?20.掌握while语句、do-while语句和for语句的语法结构和使用?21.了解break语句和continue语句的作用?22.例题:3-17、3-19、3-21、3-26、3-3123.习题三:一、1,2,3,4,6,7,9,11,12,14,15,20,21,22,24,26,27,28,29,30二、1,2,3,4,6,7,10,12,15,20三、1,4 四、1,4,6,8第4章数组和字符串24.什么是数组?程序设计中数组的作用?数组下标是从几开始的整数?25.掌握一维数组和二维数组的定义和初始化方法?26.掌握字符数组初始化和使用?(字符数组主要用来存储字符串)27.掌握字符串处理函数:gets()、puts()、strcat()、strcpy()和strcmp()的使用?28.例题:4-2,4-5,4-7,4-13,4-1429.习题四:一、2,4,6,8,10 二、1,2,3,6,7,10 三、1,3,4,5 四、2,4第5章指针30.什么是指针?什么是指针变量?31.掌握指针变量的定义?掌握与指针有关的运算?32.了解数组中的有关指针?掌握使用指针访问数组元素的方法?33.掌握使用指针处理字符串的方法?34.了解指针数组和指向指针的指针?35.解释说明语句中说明的变量:int a,*b,(*c)[5],*d[5],**e;36.例题:5-2,5-10,5-1137.习题:一、2,3,5 二、2,4,5,6 三、1,2 四、5,12第6章函数38.了解C程序的构成?掌握C程序的执行过程?39.掌握函数的定义、函数的调用和函数的声明?40.掌握函数参数的传递方式(值传递、地址传递)?两种参数传递方式的特点?41.了解函数的嵌套调用和递归定义?42.什么是局部变量?什么是全局变量?局部变量和全局变量的作用域?43.变量有哪四种存储类别?了解每种存储类别的特点?44.45.了解内部函数和外部函数?46.例题:6-5,6-8,6-9,6-16,6-17,6-2847.习题六:一、1,3,4,6,8,9,10 二、1,3,5,6,10 三、1,4,5 四、2,4第8章结构体48.结构体的特点?结构体类型的定义?结构体变量的定义?49.结构体变量的引用?掌握结构体成员引用的三种方法?50.了解公用体的概念和特点?51.掌握自定义类型名的方法?(typedef)52.例题:7-1,53.习题七:一、1,3,6,8 二、1,3,4 四、2第8章文件54.了解文件的概念?文件的分类?文件类型?文件的打开方式?55.了解文件操作的过程?了解常用的文件操作函数?。
《C语言程序设计》复习大纲《C语言程序设计》复习大纲第一章C语言程序设计初步1、从编写一个C程序到完成运行一般经过以下几个步骤:编辑、编译、连接、执行。
2、标识符命名规则:由英文字母、数字和下划线组成;长度不大于32个字符;必须以英文字母或下划线开头;不能和关键字重名;区分大小写;命名要“见名知意”。
3、C语言的输入输出功能是由C的库函数提供的。
4、C程序是由函数组成的,一个完整的程序必须有一个main函数,即主函数,程序总是从main 函数开始执行的,不论main函数在整个程序的什么位置。
第二章程序设计基础知识1、算法的特性:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。
第三章C数据及其表达式1、C语言中基本数据类型有:整型、字符型、实型、枚举型。
2、C语言中有四种基本常量:整形常量、实型常量、字符常量和字符串常量。
两种特殊常量:转义字符常量和符号常量。
3、一个整型常量以2个字节存储,一个长整型数占4个字节。
4、字符常量用单引号括起来,字符串常量用双引号括起来;每个字符串结尾都有一个字符串结束标志’\0’,’a’和”a”最大的区别就是”a”实际上是两个字符:’a’和’\0’; 而’a’只是一个字符本身。
5、逗号表达式的一般形式为:表达式1,表达式2;逗号表达式的计算过程是:先求解表达式1,再求解表达式2。
整个逗号表达式的值是表达式2的值。
6、++i,--i i的值先增1(或减1),然后再参与其他运算;i++,i-- 先参与其它运算,然后使i值增1(或减1)第四章顺序结构程序设计1、程序分为顺序结构、选择结构或分支结构、循环结构。
2、C语言的语句大体上分为五种类型:1、函数调用语句;2、表达式语句;3、控制语句;4、空语句;5、复合语句。
3、语句在最后必须出现分号,分号是语句中不可缺少的一部分。
4、putchar(c)的功能是向屏幕输出一个字符;printf(“格式化字符串”,输出项表)的功能是按用户指定的格式,把指定的数据显示到屏幕上。
2021 2021学年第二学期C++程序设计复习提纲2021-2021学年第二学期c++程序设计复习提纲一、多项选择题1.下列关于对象的描述中,错误的是___________。
a.对象是类的别名b.对象是类的实例c.一个类可以定义多个对象d.对象之间通过消息进行通信2.在对字符数组进行初始化时,___________是正确的。
a.chars1[]=”abcd”;b.chars2[3]=”xyz”;c、 chars3[][3]={'a','x','y'};d.chars4[2][3]={'xyz','mnp'};3。
地址值和字节数。
a、都是相同的B.都是不同的C.前者是相同的,后者是不同的D.前者是不同的,后者是相同的4.文件包含命令中包含的文件的扩展名_______。
a、一定是hb。
停止服务。
hc。
一定是cd。
不一定是h5。
以下while循环的数量为_____。
而(inti=0)i--;a.0b。
1c。
5d。
在函数描述中,以下____________________。
a、函数类型B.函数参数类型和名称C.函数名称D.返回值表达式7.在值传递调用中,需要。
a.形参和实参类型类型任意,个数相等b.实参和形参类型都完全一致,个数相等c.实参和形参对应的类型一致,个数相等d.实参和形参对应的类型一致,个数相等8.在一个函数中,需要通过函数实现一个不太复杂的函数,并且需要加快执行速度,这更合适。
a、内联函数B.重载函数C.递归调用D.嵌套调用9.以下对函数模板参数的描述是错误的。
a、函数模板是一组函数的模板。
B.函数模板是定义重载函数的工具。
C.模板函数是函数模板的一个实例。
D.模板函数在编译期间不生成可执行代码。
10.在下列函数中,函数不是类的成员函数。
a、构造函数B.析构函数C.友元函数D.复制构造函数11___________;不是构造函数的一个特性。
设计与艺术知识点框架设计与艺术是一门综合性学科,涉及到众多的知识点,包括设计理论、艺术史、造型构成、色彩应用、创意思维等等。
在学习和实践中,我们需要掌握一定的知识框架,以便更好地理解和应用这些知识。
本文将以设计与艺术知识点框架为主题,探讨设计与艺术领域的一些重要知识点。
一、设计理论在设计与艺术中,设计理论是学习的基础。
设计理论主要讲解了设计的基本原理、设计的规律和设计的方法论。
其中包括:1.设计的基本原理:平衡、对比、重复、节奏等。
2.设计的规律:黄金分割、三分法、对称与不对称等。
3.设计的方法论:用户导向设计、系统化设计、原型设计等。
二、艺术史艺术史是了解和学习艺术发展历程的重要途径。
通过学习艺术史,我们可以了解到不同时期和不同地域的艺术风格和特点。
主要包括以下内容:1.古代艺术:包括古埃及艺术、古希腊罗马艺术等。
2.文艺复兴:主要包括达·芬奇、米开朗基罗等艺术家的作品。
3.现代艺术:包括印象派、立体派、抽象表现主义等。
三、造型构成造型构成是设计与艺术中的重要内容,它涉及到各种造型元素和造型原则。
常见的造型元素有线条、形状、颜色、纹理等;造型原则包括平衡、对比、重复、旋转等。
对于设计师和艺术家来说,熟练掌握造型构成是创作和表达的基础。
四、色彩应用色彩是设计与艺术不可或缺的要素之一,它能够给作品带来丰富的情感和表现力。
在色彩应用中,要掌握色彩的基本知识,如色相、饱和度、明度等,同时也需要了解色彩的搭配原则和表现效果。
例如,在配色上可以运用对比色、补色、类似色等方法,以突出主题或者创造特定的氛围。
五、创意思维创意思维是设计与艺术中的核心能力,它要求设计师和艺术家能够从不同的角度去思考和解决问题。
在创意思维中,需要培养以下几个方面的能力:1.观察力:观察和思考周围的世界,发现事物的细节和特点。
2.联想力:通过联想和类比,将不同领域的知识和经验进行结合,产生新的想法。
3.批判性思维:对观点和假设进行批判和评估,找出问题并提供解决方案。
第一部分C程序设计语言复习提纲 1一. 数据的定义 1二. 运算及流程控制 3三. 程序结构和函数 4四.数据的输入和输出 5五.编译预处理 6六.面向对象程序设计初步 6第一部分C程序设计语言复习提纲一. 数据的定义(一)数据类型1. 基本类型基本类型指整型(int)、实型(float、double)和字符型(char)。
(1)常量①八进制整数:0123 十六进制整数:0x123 长整型常量:123L②实数的浮点表示法:123.0 实数的科学计数法:1.23e2③字符的转义序列:’\n’(换行)、’\065’(’A’)、’\x61’(’a’)④符号常量:#define PI 3.14 常用符号常量NULL(空值0)、EOF(文件结束符-1)(2)变量①变量的定义:int a;变量名a为一个符号地址,编译连接时对应一个内存地址,该地址代表的内存单元能够存放一个整数。
②变量的初始化:a=3;通过变量名a找到相应的内存地址,将数据3保存在此内存单元中。
2. 构造类型构造类型包括数组和结构。
(1)数组①一维数组的定义:int a[5]; 一维数组的初始化:int a[5];={1,2,3,4,5};②二维数组的定义和初始化:int b[2][3]={1,2,3,4,5};③数组元素的引用:a[0]=1; b[1][2]=0;④一维字符数组(字符串):char c[]=”abc”;(4个元素,c[3]=’\0’)⑤二维字符数组(字符串数组):char str[3][20]={“China”,”USA”,”Russia”};(2)结构①结构类型的定义:struct rectangle{float length;float width;};②结构变量的定义和初始化:struct rectangle rec1={20.0,10.0};③结构变量成员的引用:rec1.length=25.0;3. 指针(1)指针和地址的概念变量名 a p 指针变量变量值(内存单元内容)指针变量的值(地址)内存单元地址1000(2)指针变量的定义和初始化int a,*p; p=&a;(3)通过指针引用指向实体*p=10;4. 构造类型和指针类型的混和定义及应用(1)指针、数组和地址间的关系①一维数组int a[5]={1,2,3,4,5}; int *p=a; /* p=&a[0]; 首地址*/a[i]、*(p+i)、*(a+i)等价,&a[i]、p+I、a+i等价。
程序设计方法与艺术1、软件的演变过程及特点、理论学家的观点、现实是什么软件的演变过程:机器语言、FORTRAN语言、数据库语言、智能语言、可视化的面向对象语言欧洲派:编程是一门数学味儿很浓的工程学科、美国派:编程序很简单。
现实是:1、软件工程也不要求所有程序员都是受过高等教育的科学家。
2、程序员可以无绪也能产生可靠的软件系统。
无绪是指程序员不需要深入了解很多内容,就可以写出好的代码3 找到一种编码实践方法,让开发人员不用深入了解所有事情。
2、大型软件特点、开发与设计方法、推土机方式现在大型软件特点:1、基于大型组件进行组装2、先安装一个可靠又低廉的操作系统3、安装Web服务器和数据库服务器4、应用程序编写简单5、系统复杂、完全了解整个系统的全部内容很少。
6、无绪状态软件开发更好的无绪:推土机方式。
推土机方式的系统:需要什么安装什么1 、需要什么安装什么: 数据库、Java平台、应用服务器加内存2 、系统越来越大,但效率也很高3 、Web系统上,有大量的系统是采用这种推土机方式建立。
3、软件开发理论上的目标和要求,软件开发无绪真实、漂亮和优雅4、分布式开发方法、特点、开源代码开发及特点无绪的模型、组件模块重用、开发周期短、用API来完成接口调用、多类库组成分布式开发特点:整个程序的源代码多人控制、产品的开发进度无法全面掌控、全面掌控往往只是一种理想状态、版本自由选择开源代码的特点:免费、使用和获取方便、有充足的资源使用、安全有保障5、模块化应用程序开发及特点、版本管理相关内容多版本同时使用6、API及使用特点,不同软件版本的特点一个API是一堆类以及类方法和字段(属性)的集合。
对所有公开成员访问,只需要访问相应的名称;对非公开成员访问,一般使用反射技术来创建对象时,不需要知道具体类型,只需要的话字符串的方式传入类的全名即可创建一个实例对象。
反射是直接读入dll或者对应的库,反射机制是取出模块中所有的中间语言代码7、部署图及应用部署图对面向对象系统的物理方面建模,描述系统运行时节点、构件实例及其对象的配臵。
8、API构件模快及特点,如何检查API的质量构件模块:包括共享类库、框架、预先定义的应用程序框架、及上述的组合。
每个API完全正确,程序集成工作就简单,不存在调试、阅读代码、打补丁和如何设计,是“无绪”的编程。
可理解性、一致性、可见性、简单任务应该有简单方案、保护投资9、类成员访问涉及模块内部相关问题公开成员:对所有公共成员访问,只需要访问相应的名称。
非公开成员:一般使用反射技术来创建对象时,不需要知道具体类型,只需要的话字符串的方式传入类的全名即可创建一个实例对象。
10、反射机制及作用,环境变量及作用反射机制是取出模块中所有的中间语言代码。
作用:程序集设计者本身在程序集发布后由于某些需求想调用原先的私有方法,进行某些操作;程序集的使用者恶意的使用私有成员作一些本身out of scope by design 的事情。
环境变量可以控制程序11、软件协议及相关问题协议是针对文本内容的API。
它们用来定义网络传送中的信息格式,所以非常重要。
协议访问控制问题:对于一个对外开放的套接字来说,访问是没办法进行控制的。
另一个问题是因使用网络协议而被放大,每个网络协议会有多种客房段,协议有多个版本和程序进行交互,且这种多样性还会不断扩散。
不一致问题:服务器上的Subversion软件版本与客户端计算机上所使用的版本不一致。
12、软件版本如何控制,不同版本的特点,软件向后兼容的相关内容放弃老版本、修正老版本、重写系统向后兼容:源代码兼容、二进制兼容、功能兼容13、面向用例特点面向用例是对API用法的描述,使API尽量完美14、如何理解API内容公开与隐蔽API公开的内容越少越好,有必要才公开。
公开大量不必要的内容会使API无法保持兼容性15、虚拟机内容及相关特点及作用虚拟机首先解释执行类文件中的内容,然后监控程序的执行情况。
解释执行、动态编译速度快16、工厂方法内容及作用灵活性高、多态性(支持参数化返回类型),优于构造函数17、继承的特技及其优缺点,类成员的访问方式、SET,GET方法的特点能不继承就不继承,减少外部的使用方式、利用SET/GET方法访问内部字段18、面向接口及面向实现进行编程,方法的移去、添加的相关问题借口是用来公开给使用者的说明部分,实现是累内部的具体实现过程。
移去:对于源代码和二进制来讲,移除一个抽象的proteced方法是可以兼容的。
添加:(1) 尽量少用字段、(2)添加一个抽象方法可能不向后兼容、(3)避免继承类添加新抽象方法、(4)不要在接口中添加一个非抽象方法19、J ava中接口和类的区别、抽象类及作用接口允许多继承,类只能有一个直接父类抽象类可以包含static方法20、大型软件的基本构成、模块化程序、模块化设计的类型大型软件的基本构成:独立的块、组件、模块或者插件模块化程序:由不同模块构成的,一个模块是一组类的集合。
模块化组成:每个部件都是独立的,并提供定义良好的对外接口供外部调用类型:最简单模块形式(完全封闭)、功能扩展21、组件定位和交互及相关内容组件定位和交互是为了实现各部分的松耦合,模块调用、用代码注册配臵22、类的注册配臵相关内容、组件注入及相关内容减少多次注册避免系统启动过慢、利用声明绑定服务不需要写具体代码一般注入:只要选择必要类库Spring注入:对Spring注入方案进行一些扩展常见组件注入:以注册的方式将服务实现放到缓存池中LOOKUP注入:能准确部署各种实现,只要调用LOOKUP提供的方法23、真正Lookup机制相关内容及作用,优缺点LOOKUP可以有多个实例,每个实例都有自己的缓存池LOOKUP就像一个事件总线、LOOKUP使用adaptable模式管理各种注入24、A PI不同目标用户群体内容、SPI相关内容区分插件与客户端:插件是一种遵循一定规范的应用程序接口编写出来的程序。
客户端程序,一种以客户为导向的价值观,整合及管理在客户界面的所有要素。
API与SPISPI:service provider interfaceSPI不能添加新内容、设计SPI时用接口25、软件测试相关内容及作用,软件编程,兼容性编程归范的优缺点测试基本的策略都与Mock对象有关。
在提供一个普通的API的同时,还要提供一个测试API26、A PI下相互协作,API一致性问题API不是单独存在的。
光靠它们自己可做不什么有意义的事情;一定要被调用才能完成特定的功能。
只有少数的API可以独自运行,无须任何上下文环境。
必须了解如何正确地使用第三方API,才不会造成意想不到的后果。
一致性问题:在设计模块化类库的时候,只需要定义API对外公开,而其他单独的模块会根据这些API来提供具体的实现,如果是这样,那么表面要验证一个API的功能,其实要验证的却是它背后的所有具体实现。
出现问题时,也不是说只需要修正当前类库里面的代码就能搞定的,还有可能要强制要求该类库所有的第三方开发商都要修正相关代码中的问题。
解决:编写TCK、避免方法被覆盖,让相应的类变成FINAL类27、大型软件的代理和组合使用代理加上组合,避免使用继承,因为继承为一个类留下了太多的后门,采用组合技术可以正地设计API,让每一个API类都有明确的功能以及清晰的定义,不仅清楚而且优雅地为API不同类型的用户分离出相应的接口,而且该解决方案不会使其变得更加复杂28、A PI具体运行时的一些内容、程序的并发问题不要冒险、注意可靠性与无绪,提高开发时的透明度。
对于存在并发的程序和系统来说,最难的地方就在于如何保证并发正确运行。
29、同步和死锁描述线程模型、使用getter/setter方法访问私有字段时添加assert以保证线程安全、不要在持有锁的情况下调用外部代码。
30、日志的高级用途只关注对外暴露功能的地方,在测试用例执行的过程中收集信息,如果任何一个测试方法出现了问题,在程序执行过程中产生的所有日志记录都会包含在错误报告中,可以从日志中的信息中得到分析结果,如果说无法从这两个日志文件得到分析结果的话,有两种可能。
首先是日志文件没有足够的信息,或者是日志文件中记录的信息可能太粗略,无法就问题发生的原因提供明确的信息31、声明式编程的优缺点能够从比较高的层次来定义一些操作,然后由其他人执行相应的操作,与普通编程相比,后者需要从细节上定义每一处操作。
一致性并不是声明式编程带来的唯一好处,有效性是另一个优点,还有抽象性。
32、A PI的漂亮与优雅在设计API时追求漂亮,一个直接的结果是必须保留很多本该弃用的内容,对于开发者来说,为了漂亮往往会选择从API中移除一部分内容,而不是弃用这部分的内容。
优雅固然好,但是这并不是API最重要的特质。
往往项目的出资人更关心的是尽快地将产品推出市场并且要控制成本,还有就是使用的技术酷不酷。
33、理解API的简单与复杂相关内容在设计API的时候,让复杂功能尽可能实现的同时,让简单的功能尽量地易用。
34、A PI的性能要求,API的兼容性问题性能往往是破坏向后兼容性的主要原因,如果API设计得不好,那么用户在使用API 时会碰到很多性能的问题,如在调研方法时,代码的执行速度非常慢,亦或在执行过程中会创建很多不必要的对象。
在设计API时,也不应该单单为了性能过度优化而违背了API的设计原则,要谨防不成熟的优化。
在对类库做整合时,无论是最终用户还是应用程序装配者,都极其以来于向后兼容性。
努力做到向后兼容是可取的,也是必要的。
但是有时候考虑到实际的情况,100%的兼容往往是实现不了的。
99%的向后兼容性意味着在修复问题的同时,要严谨地考虑其肯呢过带来的不兼容性问题,往往要在两者之间取得一个平衡。
35、A PI的对称及相关内容对称指API设计时其使用方式应该比较一致,减少学习成本。
对称也有助于提高API 的透明度。
36、A PI开发与维护阶段相关内容、方式一旦API的用户数量大幅增加,就不能随意对API进行修改,开发进入维护阶段。
最重要目标就是保持向后兼容性,要避免对公开的类、方法和功能进行移除、清理或者大的重构。
37、理解API的漂亮与正确性不要为了漂亮保留很多本该弃用的内容,不要为了正确性牺牲易用性。
38、版本的稳定性与版本的改进所谓的稳定并不是说让API一成不变,它更多的是对API维护态度上的一个要求。
一个稳定的API也是会产生变化的,会逐渐演进。
改进的时候一定要选择哪种不会伤害现有用户的方式,如果伤害不可避免的话,至少也要选择伤害最小的那种。
要注意保持向后的兼容。
39、怎样降低版本的维护代价如果创建API的方式正确,那么维护它的成本并不比维护普通代码来得高。