索 引
A
Acceptance testing(验收测试),90, 177
Acronyms(缩写),28
Agile Developer web site (敏捷开发人员网站),176
Agile Manifesto(敏捷宣言),2
Agile vs. fragile(敏捷与脆弱),88, 122
agilemanifesto.org(敏捷宣言网站 agilemanifesto.org),2
Agility(敏捷性),1 definition of(敏捷性定义),4
All-nighter(通宵),165
Andy Hunt’s blog(Andy Hunt的博客),176
Architect(架构师),152
Aristotle(亚里士多德),20, 161
Audit trail(审核记录),145
Automated testing(自动化测试),90
Avoiding lawsuits(避免诉讼),25
B
Backlog(待办事项),94, 95
Battle(战役)Battle of Somme (WWI) (第一次世界大战,所门战役),179
Be the worst(成为最差的),32
Beck, Kent(Kent Beck),113
Belling the cat(给猫系铃铛),23
Best vs. better(最好与更好),20, 22
Big ball of mud(大泥球),137
Big design up front(在前期做大量设计),51
Bill Nye(Bill Nye,科普节目主持人),76
Binary chop(二分查找),138
Blame(指责),12
Blog(博客),158, 169
Blogs(多个博客),29
Bock, David(David Bock),121
Broken Windows(破窗),3
Brown bag sessions(午餐会议),31
Bug fix(bug修复),63
Bugs inevitability of(不可避免的bug),128
Build automation(自动构建),6, 56
Build error(构建错误),132
Build machine(构建机器),79
Building construction(建筑业),73
Burnout(精疲力竭),42
Business decisions(业务决策),45
Business logic(业务逻辑),90 testing(业务逻辑测试),91
C
Change(变化)coping with(拥抱变化),34
Code(代码)inspections(代码检查),165 procedural vs. object-oriented(过程化代码与面向对象代码),121 quality(代码质量),25 reviews(代码复查),164 rot(腐烂代码),165 sharing(共享代码),163 understanding(理解代码),100
Coding(编码)incrementally(增量式编码),113
Cohesion(内聚),117
Command-query separation(命令与查询相分离模式),121
Comments(注释),106
Commitment(承诺),149
Compiler error(编译错误),132
Compliance(符合标准),13
Composition(聚合),126
Conference room(会议室),150
Conferences(会议),29
Continuous build(持续构建),173
Continuous development(持续开发),58
Continuous integration(持续集成),6, 56, 60, 63,134, 176 multiple platform(多平台),88
Contracts, fixed price(固定价格合同),73
Coupling(耦合),104
Courage(勇气),25
Courtesy(礼貌),19
CRC card design(CRC卡设计),50
Crisis management(危机管理),4
Customer demos(客户演示),68
Customers(客户)working with(与客户一起工作),66
CVS(CVS),163
D
Data holders(数据容器),123
Daylog(日志),157 see also Solutions log(另见解决方案日志)
Deadlines(最终期限),41 setting(设定最终期限),20
Death march(死亡之旅),14
Debug log(调试日志),140
Debugger(调试器),78, 136
Debugging information(调试信息),144
Decision making(制定决策)tracking(记录决策制定过程),131
Decisions(决策)business(业务决策),45
Delegation(委托),126
Deployment(部署),61
Deprecated methods(弃用方法),135
Design(设计),48 Evolution(设计演进),152flaws(设计缺陷),81 hand-off(设计交付),49 Is design dead?(设计已死?),177 Patterns(设计模式),115 using testing for(使用测试完成设计),85
Development methodology(开发方法论)understanding(理解开发方法论),16
Devil(魔鬼)about(关于魔鬼),7
Diagnosing problems(问题诊断),37
Differences(不同),87
Docking(笔记本电脑底座扩展),163
Documentation(文档),81, 92, 105, 108
Don’t Repeat Yourself(“不要重复你自己”原则),105
Done(完成),3, 4, 41, 93, 163
DRY, see Don’t Repeat Yourself (DRY原则,参见“不要重复你自己”原则)
E
Eisenhower(艾森豪威尔)U.S. president(美国总统艾森豪威尔),51
Elegance(优雅),116
Emergency project rescue(紧急救助项目),172
Emerging technologies(正在涌现的技术),30
Encapsulation(封装),121
Environmental problems(环境问题),145
Environmental viscosity(环境黏性),162
Error messages(错误信息)details in(详细错误信息),143
Error reporting(错误报告),144
Estimation(估算),74, 93
Evolutionary development(演进开发),69
Exceptions(异常),140
Expertise(专家知识),156
Extreme programming(极限编程),113n, 148, 166
F
Failure, graceful(优雅的失败),141
Farragut, Admiral David(海军上将David Farragut),24
Feedback(反馈),3, 41, 50, 66, 76, 78, 80, 96,114
Fire drills(消防演习),40
FIT(FIT自动验收测试框架),90
Fixed-price contracts(固定价格合同),73
Fragile vs. agile, see Agile vs. fragile(脆弱与敏捷,参见敏捷与脆弱)
Framework(框架)justify(证明框架可用),178
Friction(摩擦、不和),3
G
Gang of Four(GoF,设计模式“四人帮”),115
Glossary(词汇表),67
Goal-driven design(目标驱动设计),50
H
Habits(习惯),35
Hacking, crude(未经认真考虑的随意解决方案),15
Hand-off(交付),49
Hardware vs. software(硬件与软件)relative costs(硬件与软件的相对成本),111
Heraclitus(赫拉克利特,希腊哲学家),28
Hippocratic oath(希波克拉底的誓言),60
Hoare, C.A.R.(C.A.R. Hoare英国著名计算机科学家),100
Hungarian notation(匈牙利表示法),105
I
Impatience(焦急),25
Incremental(增量的)development(增量开发),113
Incremental development(增量开发),69
Information radiators(信息辐射器),168, 177
Inheritance(继承),125
Installer(安装程序),62, 63
Integration(集成),58
Intellectual capital(知识资本),161
Investment(投入),112
ISO-9001(ISO-9001标准),13
Isolation(隔离),16
Issue tracking(问题跟踪),68
Iteration(迭代),4, 41, 65, 67
Iterative development(迭代开发),69
J
Javadoc(Javadoc工具),107
Jefferson, Thomas(托马斯·杰弗逊),157
Jones, Capers(卡珀斯·琼斯),165
JUnit(JUnit单元测试工具),78
K
Kitchen timer(厨房计时器),150
Knowledge(知识)sharing(知识分享),157
Knuth, Donald(唐纳德·努斯),112, 153
L
Learning(学习)and diversity(学习和多样性),31 iteratively(迭代式学习),29 unit tests as aid(用单元测试辅助学习),81 and unlearning(学习与忘记),35
Lewis and Clark(刘易斯与克拉克),50
Life cycle(生命周期),3
Liskov, Barbara(Liskov替换原则发明人),124
List,The(列表),94
Log, see Solutions log(日志,参见解决方案日志)
Log messages(日志信息)in version control(版本控制系统中的日志信息),163
M
Maintenance costs(维护成本),53
Manager role(管理者的角色)in meetings(管理者在会议中的角色),149
Mediator(仲裁人),20
Meetings, stand up(站立会议),148
Mentoring(指导),157
Messaging(消息发送),123
Metaphors(隐喻)using(使用隐喻),31
Methodology(方法论)understanding(理解方法论),16
Metrics(度量指标),94
Milestone(里程碑),69
Mistakes(错误)making enough(犯下足够的错误),14
Mock objects(mock对象),59, 136
Model-View-Controller (MVC)(MVC设计模式),119
N
Naming(命名),67, 103, 105
NDoc(NDoc文档生成工具),107
Negativity(消极),19
Next most important thing(下一件最重要的事),94
Noah(建造方舟的诺亚),33
O
Object-oriented vs. procedural code(面向对象与面向过程),121
OO design principles(面向对象设计原则),177
Opaque code(意图不清的代码),16
Options(选择)providing(提供选择),46
Outcome(产出),12
Overcomplication(过于复杂),85, 115
P
Pair programming(结对编程),159, 166
Paperboy and the wallet(送报纸的男孩和钱包),121
Pascal, Blaise(布莱士·帕斯卡),109
Patent claim(专利声明),117
Patterns(模式),119
Pick-up game(捡拾游戏),166
PIE principle(按表达意图编程原则),102
Pizza bribes(用比萨饼行贿),33, 42
Plan vs. planning(计划与做计划),51
Plan-based projects(按计划行事的项目),3
Planning(做计划),43
Politics(政治),19
PowerPoint architects(用PowerPoint的架构师),152
Pragmatic Programmer(《程序员修炼之道》)web site(《程序员修炼之道》网站),178
Pressure(压力),37, 45
Privacy(隐私),145
Problem(问题)diagnosis(诊断问题),129 identification(识别问题),52, 97 isolating(隔离问题),137 solving, chance for(解决问题的机会),161
Procedural vs. object-oriented code(过程化与面向对象的代码),121
Production environment(生产环境),61
Program defects(程序缺陷),145
Program intently and expressively(按表达意图编程),102
Progress reporting(进度报告),168
Project automation(项目自动化),56
Project glossary(项目词汇表),67
Project roles(项目职责),10
Prototype(原型),51, 60, 86, 136
Q
QA testing(质量保证测试),61
Quick fix(快速修复),15
R
Résumé-driven-design(简历驱动的设计),52
Raising the bar(提升标准),32
RDoc(RDoc文档生成工具),107
Readability(可读性),100
Refactoring(重构),4, 80, 113
Regression tests(回归测试),80
Remote access(远程访问),163
Repeatable tests(可重复的测试),79
Requirements(需求)freezing(需求冻结),64
Responsibilities(职责),120
Retrospectives(回顾),174
Return on investment(投资回报),25
Reuse Release Equivalency(重用发布等价原则),119
Reversibility(可逆转性),52, 153
Risk(风险),55 and integration(风险与集成),58
Roles(职责),10
Root cause analysis(根本原因分析),38
RSS feed(RSS Feed),169
Ruby(Ruby编程语言),106
Ruby on Rails(Ruby on Rails框架),35
Rut vs. grave(车辙与坟墓),36
S
Saboteurs(怠工分子),3
Sam Houston(萨姆·休斯顿将军),55
Santa Anna(圣安那将军),55
Scrum(Scrum敏捷方法论),40, 95
Security concerns(安全考虑),143
Sharing code(分享代码),163
Sharing learning(分享经验和体会),31
Side effects(副作用),122
Simple vs. simplistic(简单与简化),115
Single Responsibility principle(单一职责原则),119
Slackers(懒惰之人),3
Smalltalk(Smalltalk编程语言),123
Snowbird(犹他州雪鸟市),2
Software architect(软件架构师),152
Solutions log(解决方案日志),46, 129, 138, 157
Sprint(Sprint迭代),40, 95
Stand-up meeting(站立会议),148, 171
Starter Kit(入门工具箱),173
Strategic(战略的)decisions(战略决策),152 design(战略设计),49
Stub program(桩程序),78
Stupid users(愚蠢的用户),97
Subclass(子类),124
Subversion(Subversion版本控制软件),163
T
Tactical(战术的)
decisions(战术决策),152
design(战术设计),49
Teaching(讲授),158
Teams(团队)
size(团队大小),4
Teamwork(团队精神),151
Technology stew(技术大杂烩),53
Tell, Don’t Ask(告知,不要询问),121
Territorial code ownership(代码“领土”所有权),155
Test coverage(测试覆盖率),81
Test Driven Development(测试驱动开发),82
Testing(测试)user involvement(用户参与测试),90
Testing frameworks(测试框架),78
Time boxing(时间盒),20, 41, 128
Time sheets(时间表)problems with(时间表的问题),93
Tools(工具),6
Track issues(跟踪问题),68
Trade-offs(权衡),54, 111
Transitioning(转换),36
U
Unit testing(单元测试),6, 16, 56, 163, 174, 177 automated(自动化单元测试),78 jUnit(JUnit工具),177 jUnitPerf(JunitPerf工具),177 nUnit(NUnit工具),177
Unlearning(丢弃),35
User errors(用户错误),145
User groups(用户组),29
V
Version control(版本控制),6, 162, 173
Versioning(建立版本),57
W
Warnings(警告),132
Waterfall(瀑布式开发),49
Why (为什么)benefits of asking(问“为什么”的好处),38
Wiki(维基),6, 46, 67, 130, 169
Working overtime(加班工作),42
X
XP, see Extreme programming (XP,参见“极限编程”)
xUnit(各种语言的单元测试工具),78
Y
YAGNI(“你可能永远都不需要它”原则),84
Z
Zoom-out(缩小),114