Contents at a Glance // Laying the Foundation // Welcome to Software Construction...3 // Metaphors for a Richer Understanding of Software Development...9 // Measure Twice, Cut Once: Upstream Prerequisites...23 // Key Construction Decisions... 61 // Part II Creating High-Quality Code // 5 Design in Construction // 6 Working Classes // 7 High-Quality Routines // 8 Defensive Programming // 9 The Pseudocode Programming Process... // Part III Variables // 10 General Issues in Using Variables // 11 The Power of Variable Names // 12 Fundamental Data Types // 13 Unusual Data Types // Part IV Statements // 14 Organizing Straight-Line Code // 15 Using Conditionals // 16 Controlling Loops // 17 Unusual Control Structures // 18 Table-Driven Methods // 19 General Control Issues // Part V Code improvements 463 // 20 The software-quality LanubLaptí « 479 // 21 Culaxive ... 499 // 22 ... 535 // 23 ... 563 // 24 ... 587 // 25 ... 609 // 26 // Part VI System Considerations 649 // 27 How Program bize ATiecis 661 // 28 ... construction 689 // 29 ... 709 // 30 // Part VI Software Craftsmanship 729 // 31 ... 777 // 32 belt-uocumentmg 819 // 33 ... 837 // Themes in bottware L-... // Where to Find More Information 855