Code Complete: A Practical Handbook of Software Construction, Second Edition

 < Free Open Study >   

Index

[SYMBOL] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W]

daily build and smoke tests

     automation of

     benefits of

     broken builds 2nd

     build groups

     checklist

     defined

     diagnosis benefit     holding area for additions

     importance of     morning releases     pressure

     pretest requirement

     revisions

     smoke tests     unsurfaced work

data     architecture prerequisites     bad classes, testing for     change, identifying areas of

     combined states

     defined state

     defined-used paths, testing

     design     entered state     exited state     good classes, testing

     killed state     legacy, compatibility with     nominal case errors

     test, generators for

     used state

data dictionaries

data flow testing data literacy test

data recorder tools

data structuresdata transformations for code tuning

    array dimension minimization [See data, code tuning]

     array reference minimization     caching data

     floating point to integers     indexing data

     purpose of

data types

    "a" prefix convention [See data, types; variables, types of]

     BCD

     change, identifying areas of

     checklist

     control structures, relationship to

     Currency

     definitions

     iterative data

     key points for

     naming 2nd 3rd

     overloaded primitives     refactoring to classes 2nd

     resources on     selective data     sequential data

     t_ prefix convention

     variables of, differentiating from

data-level refactoring 2nddatabases

     performance issues     SQL     subsystem design days-in-month, determining

deallocation

     goto statements for

     pointers, of 2nd 3rd

Debug.Assert statementsdebugging    binary searches of code [See defects in code, fixing; tools, debugging]     blindness, sources of

     breakpoints     breaks, taking     brute-force

     changes, recent

     checklist

     comments, misplaced

     common defects lists     compilers as tools for 2nd

     confessional debugging

     costs of 2nd     debugger tools 2nd 3rd 4th [See also debugging aids]

     defects as opportunities

     defined     Diff tool

     execution profilers for     expanding suspicious regions

     experience of programmers, effects of

     finding defects 2nd

     fixing defects

     guessing

     history of

     hypothesis testing 2nd

     incremental approach

     ineffective approach to

     key points

     line numbers from compilers

     lint tool

     listing possibilities

     locating error sources     logic checking tools

     multiple compiler messages     narrowing code searches     obvious fixes

     performance variations

     project-wide compilers settings

     psychological considerations     quality of software, role in

     quotation marks, misplaced     readability improvements     recommended approach     reexamining defect-prone code

     resources for

     Satan's helpers

     scaffolding for

     scientific method of     self-knowledge from     source-code comparators     stabilizing errors

     superstitious approaches     symbolic debuggers     syntax checking 2nd 3rd

     system debuggers

     test case creation

     testing, compared to

     time for, setting maximums     tools for 2nd 3rd 4th [See also debugging aids]

     understanding the problems

     unit tests     varying test cases

     warnings, treating as errors

debugging aids    C++ preprocessors [See debugging, aids to; debugging, defensive]

     case statements     early introduction recommended

     offensive programming

     planning removal of

     pointers, checking

     preprocessors

     production constraints in development versions

     purpose of

     stubs

     version control tools

decision tables

declarations

     2nd 3rd [See variables, declaring]

     const recommended

     declare and define near first use rule     define near first use rule

     final recommended     formatting     implicit declarations

     multiple on one line

     numerical data, commenting

     order of     placement of

     pointers 2nd     using all declared Decorator patterndefects in code

    classes prone to error [See errors, coding]

     classifications of

     clerical errors (typos)

     Code Complete example     construction, proportion resulting from     cost of detection     cost of fixing

     databases of     detection by various techniques, table of     distribution of

     ease of fixing defects

     error checklists

     expected rate of

     finding, checklist     intermittent

     misunderstood designs as sources for

     opportunities presented by     outside of construction domain

     percentage of, measurement

     performance issues     programmers at fault for

     readability improvements     refactoring after fixing

     scope of

     self-knowledge from

     size of projects, effects on

     sources of, table

     stabilizing

defensive programming

     assertions

     assumptions to check, list of

     barricades

     checklist

     debugging aids

     defined

     error handling for     exceptions 2nd

     friendly messages guideline     graceful crashing guideline     guidelines for production code

     hard crash errors guideline

     important errors guideline

     key points for     logging guideline

     problems caused by     quality improvement techniques, other     robustness vs. correctness     security issues

     trivial errors guideline

     validating input

defined data state

defining variables Delphi, recoding to assembler DeMorgan's Theorems, applyingdependencies, code-ordering

    checker tools [See sequences, code, order of]     circular     clarifying

     concept of

     documentation

     error checking

     hidden     initialization order

     naming routines

     non-obvious     organization of code

     parameters, effective

design     abstractions, forming consistent

     accidental problems     BDUF

     beauty

     bottom-up approach to design

     business logic subsystem

     capturing work

     central points of control

     change, identifying areas of

     changes, management of

     characteristics of high quality

     checklists 2nd

     classes, division into

     collaboration

     communications among subsystems

     completion of, determining     complexity management

     construction activity, as     contract, by     coupling considerations

     database access subsystem

     defined

     diagrams, drawing     discussion, summarizing

     divide and conquer technique     documentation overkill     documentation, as     emergent nature of

     encapsulation

     enough, determining

     essential problems

     extensibility goal     formality of, determining     formalizing class contracts     goals checklist

     good practices table for     hierarchies for     high fan-in goal

     IEEE standards

     information hiding 2nd

     inheritance

     iteration practice     key points

     leanness goal

     level of detail needed     levels of

     loose coupling goal

     low-to-medium fan-out goal     maintenance goals

     mental limitations of humans     metrics, warning signs from

     nondeterministic nature of 2nd

     object-oriented, resource for

     objects, real world, finding

     packages level

     performance tuning considerations

     portability goal

     practices 2nd

     prioritizing during

     prototyping

     resources for

     restrictive nature of

     reusability goal

     routines, of     sloppy process nature of

     software system level     standard techniques goal     standards, IEEE

     stratification goal

     strong cohesion

     subsystem level     system dependencies subsystem

     testing for implementation     tools for     top-down approach     tradeoffs

     UML diagrams

     user interface subsystem

     visual documentation of

     wicked problem nature of     Wikis, capturing on destructors, exceptions with detailed-design documents

developer testing development processes development standards, IEEE

diagrams

     heuristic design use of

     UML

Diff tools 2nddirect access tables

    advantages of [See table-driven methods, direct access]

     arrays for     case statement approach

     days-in-month example

     defined     design method for

     flexible-message-format example     fudging keys for

     insurance rates example

     keys for

     object approach

     transforming keys

disassemblers

discipline, importance of

discourse rules

disposing of objects

divide and conquer technique

division

Do loops [See also loops]

documentation

     abbreviation of names     ADTs for

     bad code, of     Book Paradigm for     capturing work

     checklists 2nd

     classes

     control structures     CRC cards for

     dependencies, clarifying     design as 2nd     detailed-design documents     external

     Javadoc 2nd

     key points

     names as 2nd 3rd

     organization of data     parameter assumptions     pseudocode, deriving from     resources on

     routine parameter assumptions     routines     SDFs

     self-documenting code

     size of projects, effects of

     source code as

     standards, IEEE     style differences, managing

     UDFs

     visual, of designs     why vs. how

dog tag fields

dog-and-pony shows DoNothing() macros

DRY (Don't Repeat Yourself) principleduplication

     avoiding with routines

     code as refactoring indicator

 < Free Open Study >   

Категории