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 I 1 2 // 3 // 4 // vili // Table of Contents // Part V Code improvements 463 // 20 The bOTtware-guaiity LanubLaptí « 479 // 21 Culaxive .onsviUCLiuii» • • • • • • * * * * * 499 // 22 535 // 23 563 // 24 587 // 25 609 // 26 // Part VI System Considerations 649 // 27 How Program bize ATiecis 661 // 28 ’? /? Mdiidging construcTion 689 // 29 709 // 30 // Part VI i Software Craftsmanship 729 // 31 777 // 32 belt-uocumentmg 819 // 33 837 // 34 35 Themes in bottware L-raiismdiibiiip Where to Find More Information 855