第1章 语言选择 3
1.1语言嗜好 3
1.2缺点 4
1.2.1解释,而不是编译 4
1.2.2语言特性 5
1.2.3多重继承 7
1.2.4平台依赖 7
1.2.5从Visual Basic 6升级 8
1.2.6 GUI构建 8
1.2.7不够简洁 8
1.2.8功能和灵活性 9
1.3优点 9
1.3.1自文档 9
1.3.2原型制作与简单应用程序 10
1.3.3 IDE 10
1.3.4语言相关性 11
1.3.5垃圾收集 11
1.3.6大人才池 12
1.4小结 12
第2章 生命周期方法论 15
2.1生命周期阶段 15
2.1.1想法表述与细化 15
2.1.2小组构建 17
2.1.3需求收集 19
2.1.4可行性分析 20
2.1.5高层次的设计 22
2.1.6较低层次的设计 23
2.1.7实现 24
2.1.8测试 25
2.1.9开发 29
2.1.10支持 30
2.2生命周期模型 31
2.2.1一次性应用程序 32
2.2.2 Waterfall 32
2.2.3原型 37
2.2.4混合与匹配 43
2.3小结 43
第3章 敏捷方法论 45
3.1敏捷编程 45
3.1.1 Crystal Clear 47
3.1.2极限编程 48
3.1.3敏捷与传统生命周期 56
3.1.4敏捷优势与弱点 57
3.2契约式设计 58
3.3用于敏捷开发的Microsoft工具 62
3.4小结 63
第4章 面向对象的设计 65
4.1 Bug Hunter示例 65
4.2构建对象模型 66
4.2.1挑选候选类 66
4.2.2将候选类转换成类 67
4.2.3添加内部类 70
4.2.4添加数据库类 70
4.2.5学习不同的设计观点 71
4.2.6改进类 71
4.3 UML 74
4.3.1用例图 75
4.3.2类图 77
4.3.3顺序图 80
4.3.4活动图 81
4.3.5状态图 82
4.3.6组件图 83
4.3.7部署图 84
4.3.8 UML小结 85
4.4 UML工具 86
4.5小结 88
第5章 用户界面设计 89
5.1 UI设计原则 89
5.1.1赋予用户控制权 90
5.1.2关注任务 90
5.1.3提出忠告,而不是采取行动 91
5.1.4帮助用户做正确的事 92
5.2用户 92
5.2.1了解用户的工作 92
5.2.2尊重用户 93
5.2.3了解用户的环境 93
5.2.4了解用户类型 94
5.3表单 95
5.3.1 MDI与SDI 96
5.3.2重新调整表单大小 96
5.3.3编辑器 98
5.3.4属性表单 98
5.4设计原则 100
5.4.1不同阶段中的原型 100
5.4.2提升表单流程 100
5.4.3组合相关条目 103
5.4.4支持调整大小 104
5.4.5支持不同的字体大小 105
5.4.6优化菜单 109
5.4.7明智地使用空间 110
5.4.8设计优秀标题 111
5.4.9保留状态 112
5.4.10撤销与重做 112
5.4.11适应不同的技能水平 116
5.4.12提供适当的反馈 118
5.5一致性 120
5.6小结 120
第6章 数据存储器设计 121
6.1关系数据库 121
6.2关系数据库产品 126
6.3编译到代码中的数据 127
6.4资源文件 132
6.5卫星程序集 134
6.6系统注册表 135
6.7 INI文件 140
6.8 XML 143
6.9其他文本文件格式 146
6.10对象数据库 147
6.11小结 148
第7章 设计模式 149
7.1创建模式 150
7.1.1克隆 150
7.1.2工厂 154
7.2关系模式 156
7.2.1 Adapter 157
7.2.2 Facade 157
7.2.3 Interface 158
7.3行为模式 158
7.3.1抽象基类 159
7.3.2 Chain of Responsibility 162
7.3.3 Chain of Events 164
7.3.4 Command 166
7.3.5 Delegation 168
7.3.6模型、视图和控制器 171
7.3.7 Property Procedure 179
7.3.8快照 180
7.3.9 Strategy 184
7.4更多信息 186
7.5小结 187
第8章 代码片断、宏和插件 191
8.1代码片断 191
8.1.1使用代码片断 192
8.1.2建立代码片断 194
8.1.3安装代码片断 196
8.1.4共享代码片断 197
8.2宏 197
8.2.1记录宏 198
8.2.2编辑宏 199
8.2.3修改宏 200
8.2.4使用样本宏 203
8.2.5定制Visual Studio 204
8.2.6共享宏 206
8.3插件 206
8.3.1创建插件 207
8.3.2加入插件代码 211
8.3.3创建更好的插件 214
8.3.4学习其他对象 215
8.4小结 220
第9章 脚本 221
9.1脚本安全 221
9.2执行SQL语句 225
9.2.1执行查询 225
9.2.2生成查询 227
9.2.3运行命令 231
9.3执行Visual Basic代码 235
9.3.1运行代码 235
9.3.2公开对象模型 238
9.3.3简化脚本 241
9.4表达式求值 243
9.5小结 245
第10章 自定义控件与组件 247
10.1建立派生控件 247
10.2设置工具箱位图 253
10.3测试控件 254
10.4建立UserControl 255
10.5从头开始建立控件 259
10.6建立组件 265
10.6.1建立扩展程序提供程序 271
10.6.2一个简单的示例 272
10.6.3更为实用的一个示例 274
10.7小结 278
第11章 属性支持 279
11.1自定义综述 280
11.2显示并编辑LineWidth 285
11.2.1 LineWidthEditor 285
11.2.2 LineWidthListBox 287
11.3显示并编辑LineColor 289
11.4显示并编辑PolyPolyline 290
11.4.1 PolyPolylineConverter 290
11.4.2 PolyPolylineEditor 291
11.5显示智能标记 294
11.6显示属性表 301
11.7显示对象属性 304
11.8小结 310
第12章 特性和XML注释 311
12.1特性(attribute) 312
12.1.1辅助Properties窗口 313
12.1.2辅助窗体设计器 321
12.1.3辅助代码编辑器 322
12.1.4 Helping Serialization 325
12.2 XML注释 329
12.2.1自动生成文档 330
12.2.2设计时支持 331
12.2.3推荐使用的标记 332
12.3建议 336
12.4小结 338
第13章 文档 343
13.1编写文档的时机 343
13.2文档类型 345
13.2.1用户文档 345
13.2.2开发人员文档 350
13.3 XML文档 354
13.3.1自定义XML标记 355
13.3.2使用XML文档 356
13.3.3 XmlDocToText程序 357
13.3.4 XmlDocToHtml程序 362
13.4小结 369
第14章 开发理念 371
14.1为人设计程序 371
14.2掌握用户 373
14.3让程序查找错误 374
14.4让程序先运行起来 375
14.5三思而后行 376
14.6一步一个脚印 377
14.7使用面向对象原则 378
14.8利用Visual Studio 379
14.9担心最弱的一个环节 380
14.10保存一切 382
14.11避免使用最新的产品 383
14.12使用敏捷方法的部分技术 384
14.13小结 384
第15章 编码标准 387
15.1名称 388
15.1.1匈牙利表示法 388
15.1.2组件名称 389
15.1.3常量名称 391
15.1.4例程的变量名称 391
15.1.5其他名称 391
15.1.6 Boolean名称 392
15.1.7缩写 393
15.1.8转义名称 393
15.1.9类名称 394
15.1.10属性名称 394
15.1.11方法名称 395
15.1.12事件名称 395
15.2声明变量 397
15.3重载以及可选参数 399
15.4 ParamArray 403
15.5 If Then和Select Case 404
15.6代码块结尾 406
15.7退出点 407
15.8 Exit For、 Exit Do以及 Continue 408
15.9 End 408
15.10小结 409
第16章 防止bug 411
16.1捕获bug 411
16.1.1等待bug 412
16.1.2全局错误处理 413
16.1.3猎获bug 417
16.2 Try Catch块 420
16.3对bug的响应 422
16.4小结 426
第17章 测试 427
17.1测试哲学 427
17.1.1尽早和经常测试 428
17.1.2测试一切 428
17.1.3永远保存测试 429
17.1.4不敌视指出bug的同事 429
17.2测试种类 430
17.2.1子单元测试 430
17.2.2单元测试 431
17.2.3集成测试 431
17.2.4系统测试 432
17.2.5回归测试 432
17.3测试技术 433
17.3.1穷尽测试 433
17.3.2黑盒测试 433
17.3.3白盒测试 434
17.3.4随机测试 434
17.4测试机制 434
17.4.1在应用程序内测试 435
17.4.2在应用程序外测试 437
17.4.3一个测试示例 438
17.5测试工具 440
17.6 Visual Studio测试工具 442
17.7 GUI测试 443
17.8小结 447
第18章 部署 449
18.1部署模型 49
18.1.1用户类型 449
18.1.2主要和次要版本 450
18.1.3敏捷发布 451
18.2部署方法 452
18.2.1 ClickOnce 452
18.2.2 Windows Installer 457
18.2.3其他解决方案 460
18.2.4 Xcopy 461
18.3小结 461
第19章 闪屏 465
19.1确定闪屏内容 466
19.2显示闪屏 467
19.3显示About对话框 469
19.4提供反馈 470
19.5控制条目位置 471
19.6表单成形 472
19.7填充文本 474
19.8旋转文本 475
19.9显示隐藏的屏幕 476
19.10小结 478
第20章 打印 481
20.1事件驱动的打印 481
20.2打印表单 484
20.3封装文本 488
20.4使文本流动 492
20.5过程化打印 498
20.6小结 502
第21章 线程 505
21.1线程的优缺点 505
21.1.1优点 506
21.1.2缺点 506
21.2使用后台工作程序 511
21.3 UI线程 511
21.4提供反馈 516
21.5提供图形化反馈 519
21.6分割任务 520
21.7 SyncLock 523
21.8小结 526
第22章 反射 527
22.1探索程序集 527
22.2探索枚举 536
22.3动态地加载类 539
22.4动态地调用方法 543
22.5发现资源 546
22.6检索已知资源 548
22.7小结 552
第23章 内存管理 553
23.1垃圾收集 553
23.2结束 554
23.3处置资源 556
23.4处置自定义类 557
23.5预先分配对象 559
23.6弱引用 562
23.7改进垃圾收集 564
23.8小结 566