search for books and compare prices
Tables of Contents for Code Complete
Chapter/Section Title
Page #
Page Count
Checklists
ix
 
Reference Tables
x
 
Preface
xi
 
LAYING THE FOUNDATION
Welcome to Software Construction
1
6
What Is Software Construction?
Why Is Software Construction Important?
Metaphors for a Richer Understanding of Programming
7
14
The Importance of Metaphors
How to Use Software Metaphors
Common Software Metaphors
Prerequisites to Construction
21
32
Importance of Prerequisites
Problem-Definition Prerequisite
Requirements Prerequisite
Architecture Prerequisite
Choice-of-Programming-Language Prerequisite
Programming Conventions
Amount of Time to Spend on Prerequisites
Adapting Prerequisites to Your Project
DESIGN
Steps in Building a Routine
53
18
Summary of Steps in Building a Routine
PDL for Pros
Design the Routine
Code the Routine
Check the Code Formally
Characteristics of High-Quality Routines
71
44
Valid Reasons to Create a Routine
Good Routine Names
Strong Cohesion
Loose Coupling
How Long Can a Routine Be?
Defensive Programming
How to Use Routine Parameters
Considerations in the Use of Functions
Macro Routines
Three out of Four Programmers Surveyed Prefer Modules
115
24
Modularity:Cohesion and Coupling
Information Hiding
Good Reasons to Create a Module
Implementing Modules in Any Language
High-Level Design in Construction
139
32
Introduction to Software Design
Structured Design
Object-Oriented Design
Comments on Popular Methodologies
Round-Trip Design
DATA
Creating Data
171
14
Data Literacy
Reasons to Create Your Own Types
Guidelines for Creating Your Own Types
Making Variable Declarations Easy
Guidelines for Initializing Data
The Power of Data Names
185
30
Considerations in Choosing Good Names
Naming Specific Types of Data
The Power of Naming Conventions
Informal Naming Conventions
The Hungarian Naming Convention
Creating Short Names That Are Readable
Kinds of Names to Avoid
General Issues in Using Variables
215
20
Scope
Persistence
Binding Time
Relationship Between Data Structures and Control Structures
Using Each Variable for Exactly One Purpose
Global Variables
Fundamental Data Types
235
32
Numbers in General
Integers
Floating-Point Numbers
Characters and Strings
Boolean Variables
Enumerated Types
Named Constants
Arrays
Pointers
Complex Data Types
267
32
Records and Structures
Table-Driven Methods
Abstract Data Types (ADTs)
CONTROL
Organizing Straight-Line Code
299
12
Statements That Must Be in a Specific Order
Statements Whose Order Doesn't Matter
Using Conditionals
311
12
if Statements
case Statements
Controlling Loops
323
24
Selecting the Kind of Loop
Controlling the Loop
Creating Loops Easily---from the Inside Out
Correspondence Between Loops and Arrays
Unusual Control Structures
347
20
goto
return
Recursion
General Control Issues
367
32
Boolean Expressions
Compound Statements(Blocks)
Null Statements
Taming Dangerously Deep Nesting
The Power of Structured Programming
Emulating Structured Constructs with gotos
Control Structures and Complexity
CONSTANT CONSIDERATIONS
Layout and Style
399
54
Layout Fundamentals
Layout Techniques
Layout Styles
Laying Out Control Structures
Laying Out Individual Statements
Laying Out Comments
Laying Out Routines
Laying Out Files, Modules, and Programs
Self-Documenting Code
453
40
External Documentation
Programming Style as Documentation
To Comment or Not to Comment
Keys to Effective Comments
Commenting Techniques
Programming Tools
493
20
Design Tools
Source-Code Tools
Executable-Code Tools
Tool-Oriented Environments
Building Your Own Programming Tools
Ideal Programming Environment
How Program Size Affects Construction
513
14
Range of Project Sizes
Effect of Project Size on Development Activities
Effect of Project Size on Errors
Effect of Project Size on Productivity
Managing Construction
527
30
Encouraging Good Coding
Configuration Management
Estimating a Construction Schedule
Metrics
Treating Programmers as People
Managing Your Manager
QUALITY IMPROVEMENT
The Software-Quality Landscape
557
16
Characteristics of Software Quality
Techniques for Improving Software Quality
Relative Effectiveness of the Techniques
When to Do Quality Assurance
The General Principle of Software Quality
Reviews
573
16
Role of Reviews in Software Quality Assurance
Inspections
Other Kinds of Reviews
Unit Testing
589
34
Role of Unit Testing in Software Quality
General Approach to Unit Testing
Bag of Testing Tricks
Typical Errors
Test-Support Tools
Improving Your Testing
Keeping Test Records
Debugging
623
28
Overview of Debugging Issues
Finding an Error
Fixing an Error
Psychological Considerations in Debugging
Debugging Tools
FINAL STEPS
System Integration
651
24
Importance of the Integration Method
Phased vs. Incremental Integration
Incremental Integration Strategies
Evolutionary Delivery
Code-Tuning Strategies
675
20
Performance Overview
Introduction to Code Tuning
Kinds of Fat and Molasses
Summary of the Approach to Code Tuning
Code-Tuning Techniques
695
42
Loops
Logic
Data Transformations
Expressions
Routines
Recording in Assembler
Quick Reference to Tuning Techniques
Software Evolution
737
18
Kinds of Software Evolution
General Guidelines for Software Evolution
Making New Routines
SOFTWARE CRAFTSMANSHIP
Personal Character
755
18
Isn't Personal Character Off the Topic?
Intelligence and Humility
Curiosity
Intellectual Honesty
Communication and Cooperation
Creativity and Discipline
Laziness
Characteristics That Don't Matter As Much As You Might Think
Habits
Themes in Software Craftsmanship
773
20
Conquer Complexity
Pick Your Process
Write Programs for People First, Computers Second
Focus Your Attention with the Help of Conventions
Program in Terms of the Problem Domain
Watch for Falling Rocks
Iterate, Repeatedly, Again and Again
Thou Shalt Rend Software and Religion Asunder
Where to Go for More Information
793
16
The Library of a Software Professional
Information About Software Construction
Topics Beyond Construction
Periodicals
Joining a Professional Organization
Book Sources
Bibliography
809
18
Index
827