naming, 5153, 1045, 220
Navigate method, 4012
.NET. See also Visual Studio .NET
Internet Explorer and, 397
XML support, 250
Newkirk, Jim, 18
newlines
as array, 60
as ArrayList, 60, 6364
extra, 3637
InsertParagraphTag and, 6465
vs. lines, 6465
prefixing, 25
as variable, 54
NewModelLineContainingCursor method, 450
NewParagraph method, 61, 62, 160
NewParaSelectionStart method, 150, 15354, 155
NewSection method, 15153, 169
NewSectionSelectionStart method, 15354, 155
NewSelectionStart method, 47, 155, 170, 321
Notepad, 6. See also TextPad vs. XML Notepad
Notepad object, 121
NotepadCloneNoMenu class, 7, 185
Notepad.cs code summary, 13031
NotepadMenuItem class, 341, 342, 34344, 346, 347, 348, 356
improving, 38283
replacing scalar
NumberOfLinesToPutBack method, 450
NumberOfLinesToRemove method, 450
NUnit
assertion
command prompt vs. GUI versions, 19
as debugger, 2627
defined, 18
how it works, 19
Ignore feature, 235
overview, 1819
setting up, 1920
StandardOut window, 243
Visual Studio .NET and, 2829
nunit.framework.dll file, 19
object adapters, 246
object constructor. See XMLNotepad.cs
objects, creating and using, 99
OneDirtyLine test, 94, 97
OneLineCommand test, 92, 93, 97
OnKeyDown method, 9, 66
Open command, 287
OpenFileDialog, 302
OptimizedTextModel object, 447, 471
OptimizeSavedModel object, 448
ordered lists
Customer Acceptance Test, 354
estimated time to implement feature, 270, 273
implementing, 35456
pair programming, xxviixxviii, 2, 147, 197, 227, 25556, 266, 421, 436, 471, 473, 480
paired XML tags, 2224
paper designs, 451, 46567, 494
ParaAfterPara test, 141, 373
paragraph tags <p>. See also InsertParagraphTag method
finding in text strings, 2021
for single-line paragraphs, 231
paragraphs, as single lines, 231
Parse method, 425
pasting, estimated time to implement feature, 271, 273
patterns
Adapter pattern, 246
Command pattern, 24546
Mediator pattern, 24647, 250
when to use, 247
Perform method, 194, 195
PerformClick method, 213, 299
Petzold, Charles, 34, 6, 9, 12, 182, 245, 248, 284, 457
planning
deciding how much is needed, 31617
as Extreme Programming practice, xxvxxvi
iteration plans, 14, 273, 275
release plans, 14, 275
role of deadlines, 26970
Planning Game, as Extreme Programming practice, xxvxxvi
pointers. See delegates
Pollice, Gary, 407
Poole, Charlie, 18
PositionInLine method, 456
PositionOfCursorInLine method, 224, 225, 228, 229, 456
<pre> tags
adding, 2015
inserting returns inside, 21929
multiple lines in, 231, 233
testing, 2014
pressure. See also deadlines
handling, 48789
productivity aspect, 489
quality aspect, 489
Prime Directive (Kerth), 477
procedural code, 86
Process class, 403
Programmer Unit Tests
vs. Customer Acceptance Tests, 77, 97, 144, 146, 219, 241, 421
estimated time to improve XProgramming.com Web pages, 271, 275
as Extreme Programming practice, xxviii
InputCommand as test, 142
ITestTextBox as test, 142
MockTextBox as test, 142
TestTextModel as test, 14244
for Undo, 41012
programmers
vs. customers, 77, 97, 144, 146, 219, 241, 421, 47879
role, defined, 1, 2
ways to schedule learning time, 25152
programming. See also code; pair programming
copying and pasting code, 31718
reflecting on results, 477
rhythm, 207
programming by
CleanTheLines example, 95
CustomerTest file example, 8788
Enter key example, 32930
naming practices, 5153, 87, 22729
WriteAndReadFile test example, 27983
projects
adding new C# files, 4
blank vs. built-in, 5
ConsoleHelloWorld, 4
DialogHelloWorld, 5
need for programmer learning time, 25152
organizing in Visual Studio .NET, 491
properties
C# syntax, 21
vs.
PutBackOldLines method, 450
PutText method, 11718, 119, 120, 122, 124, 246, 257, 259, 263, 267, 435, 438