deadlines, 26970
debugging
avoiding, 27, 48990
as bad sign, 41819, 475
under NUnit, 2627
SaveFile method, 29899
test-driven development and, 27
Undo feature, 43435
Visual Studio .NET overview, 4, 2728
when to use, 490
delegates
defining, 25960
initializing, 260
in menu and keyboard handlers, 25865
naming, 259
overview, 197200
XMLKeyDownHandler and, 25865
deploying stories as installable software, 11011
design
improvement as Extreme Programming practice, xxviii
more vs. less, 492
on paper, 451, 46567, 494
role in Extreme Programming practice, 8
simplicity as Extreme Programming practice, xxvii, 178, 23132
Undo summary, 462
desk checking code, 100, 109, 221
development
incremental, 462, 463, 464, 494
signs of trouble, 46465, 468, 472
test-driven, xxviii, 9, 27
DialogFileAction method, 305
DialogHelloWorld project, 5
difficulty deferring rule, 78
direct rendering, 11, 12, 493
DirectInput test, 80, 104
DirectMenu test, 212, 291
Directory class, 79, 24748
duplication
as code smell, 318
finding, 15153
importance of removing, 442
InsertSectionTags method vs. InsertParagraphTag method, 15965, 166, 173
InsertSectionTags method vs. NewSection method, 15153
between menu item handlers and KeyDown handler, 25556
removing, 15355, 305
duplication,
as signal, 341
simple textual type vs. same activity type, 256
else clause, 325
EmptyCommand test, 9192, 93
EmptyModel test, 104, 162, 291
end users. See customers
Enter key
adding functionality to unordered lists, 32830
vs. Alt+S, 188
vs. InsertParagraph Tag, 210
project role, 42
scrolling after, 11112
vs. Shift+Enter key combination, 23839
typing while inside <LI> tags, 31213
Enter method
AltS and, 173, 175
comments and, 5153
vs. ControlS method, 146
moving to TextModel class, 45
as physical method, 175
refactoring, 4950
renaming, 52
Enumeration, 34148, 425
Keys enumeration, 457
Tags enumeration, 381, 385, 491
estimating, 12, 14, 15, 275, 306
events
keyboard, handling, 910
KeyDown event, 10, 34, 35, 37, 181, 210, 211, 417, 429, 430, 431, 432, 452, 45758, 460
KeyPress event, 37, 181, 418, 429, 430, 432, 451, 45758, 460
KeyUp event, 37
ExecuteMenu method, 214, 294, 355
experiments, 468. See also spikes
Extract Method, 54, 88, 1067, 11718, 257, 27980, 3034, 305
Extreme Programming (XP). See also pair programming
business value rule, 10, 217
difficulty deferring rule, 78
food as
iteration plans, 273, 275
learning rule, 78
list of practices, xxvxxx
list of values, xxiiixxiv
overview, xxiiixxx
role of deadlines, 26970
steps in building applications, 12
ways to do story estimating, 27273
YAGNI (You Arent Gonna Need It) rule, 192, 31718, 471
Feathers, Michael, 125, 182
feature envy, 267
File class, 247
File menu, 287
file operations
estimated time to implement feature, 270, 273
saving and loading, 277306
testing, 27784, 290301
FileAction method, 304, 305
FileDialog class, 304
FileInput test
code summary, 141
creating, 7879
FirstLineToRemove method, 450
FirstPositionOfLine method, 229
forethought vs. hindsight, 66
Form class
code summary, 18385
customer tests and, 431
Mediator pattern and, 24647
menu handlers, 19293
single-purpose vs. multipurpose objects, 41
vs. TextModel, 42, 45, 247, 25556, 322, 329, 348, 48081
Form1_Load method, 401
Fowler, Martin, xxviii, 182, 267, 474
frameworks, 19, 244
Friedman, Paul, 25566
FrontOfCursorLine method, 224, 225, 228
FullSnapshot method, 454, 455
function pointers. See delegates
functionality
vs. generality, 3334, 178
GUI vs. system, 41, 80