Cc2e checklists

  • View
    293

  • Download
    2

Embed Size (px)

DESCRIPTION

 

Text of Cc2e checklists

  • Code Complete, 2nd Ed. Checklists1 Steven C. McConnell This material is copied and/or adapted from the Code Complete 2 Website at cc2e.com. This material is Copyright c 1993-2004 Steven C. McConnell. Permission is hereby given to copy, adapt, and distribute this material as long as this notice is included on all such materials and the materials are not sold, licensed, or otherwise distributed for commercial gain. 1 A Converted to LTEX by Matthew J. Miller (www.matthewjmiller.net)
  • 1 Contents Chapter 3: Measure Twice Cut Once: Upstream Prerequisites Checklist: Requirements . . . . . . . . . . . . . . . . . . . . . Specic Functional Requirements . . . . . . . . . . . . . Specic Non-Functional (Quality) Requirements . . . . . Requirements Quality . . . . . . . . . . . . . . . . . . . Requirements Completeness . . . . . . . . . . . . . . . . Checklist: Architecture . . . . . . . . . . . . . . . . . . . . . . Specic Architectural Topics . . . . . . . . . . . . . . . . General Architectural Quality . . . . . . . . . . . . . . . Checklist: Upstream Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 5 6 6 6 6 7 8 Chapter 4: Key Construction Decisions Checklist: Major Construction Practices . Coding . . . . . . . . . . . . . . . . Teamwork . . . . . . . . . . . . . . Quality Assurance . . . . . . . . . Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 9 9 9 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 5: Design In Construction 10 Checklist: Design in Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Design Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Design Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Chapter 6: Working Classes Checklist: Class Quality . . . . . . Abstract Data Types . . . . . . Abstraction . . . . . . . . . . Encapsulation . . . . . . . . . Inheritance . . . . . . . . . . Other Implementation Issues Language-Specic Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 11 11 11 11 12 12 Chapter 7: High Quality Routines 13 Checklist: High-Quality Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Big-Picture Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Parameter-Passing Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Chapter 8: Defensive Programming Checklist: Defensive Programming General . . . . . . . . . . . . Exceptions . . . . . . . . . . . Security Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 14 14 15 Chapter 9: Pseudocode Programming Process 16 Checklist: The Pseudocode Programming Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 This material is copied and/or adapted from the Code Complete 2 Website at cc2e.com. This material is Copyright c 1993-2004 Steven C. McConnell. Permission is hereby given to copy, adapt, and distribute this material as long as this notice is included on all such materials and the materials are not sold, licensed, or otherwise distributed for commercial gain.
  • 2 Chapter 10: General Issues In Using Variables 17 Checklist: General Considerations In Using Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Initializing Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Other General Issues in Using Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Chapter 11: Power of Variables Names Checklist: Naming Variables . . . . . . . . . . . . . . . General Naming Considerations . . . . . . . . . . Naming Specic Kinds Of Data . . . . . . . . . . Naming Conventions . . . . . . . . . . . . . . . . Short Names . . . . . . . . . . . . . . . . . . . . Common Naming Problems: Have You Avoided. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 18 18 18 18 18 19 Chapter 12: Fundamental Data Types Checklist: Fundamental Data . . . . Numbers in General . . . . . . Integers . . . . . . . . . . . . . Floating-Point Numbers . . . . Characters and Strings . . . . . Boolean Variables . . . . . . . . Enumerated Types . . . . . . . Named Constants . . . . . . . . Arrays . . . . . . . . . . . . . . Creating Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 20 20 20 20 20 21 21 21 21 Chapter 13: Unusual Data Types Checklist: Considerations In Using Unusual Data Types Structures . . . . . . . . . . . . . . . . . . . . . . Global Data . . . . . . . . . . . . . . . . . . . . . Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 22 22 22 22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 14: Organizing Straight Line Code 23 Checklist: Organizing Straight Line Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Chapter 15: Using Conditionals Checklist: Conditionals . . . . if-then Statements . . . if-then-else-if Chains . . case Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 24 24 24 24 Chapter 16: Controlling Loops Checklist: Loops . . . . . . . . . Loop Selection and Creation Entering the Loop . . . . . . Inside the Loop . . . . . . . Loop Indexes . . . . . . . . Exiting the Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 25 25 25 25 25 26 . . . . This material is copied and/or adapted from the Code Complete 2 Website at cc2e.com. This material is Copyright c 1993-2004 Steven C. McConnell. Permission is hereby given to copy, adapt, and distribute this material as long as this notice is included on all such materials and the materials are not sold, licensed, or otherwise distributed for commercial gain.
  • 3 Chapter 17: Unusual Control Structures Checklist: Unusual Control Structures return . . . . . . . . . . . . . . . Recursion . . . . . . . . . . . . . goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 27 27 27 Chapter 18: Table Driven Methods 28 Checklist: Table Driven Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .