Awesome Programming Knowledge
  • Introduction
  • Writing Better Code
    • Books
      • Refactoring: Improving the Design of Existing Code
        • Extract Method
        • Quotes
          • CodeForHuman
          • Make Comment Superfluous
          • The Rule of Three
      • Clean code: A Handbook of Agile Software Craftsmanship
        • Meaningful name
        • Single Level of Abstraction
        • Small Functions
        • Avoid having BOOL Function Parameters
      • Working effectively with legacy code
        • Sprout Method
      • Code Complete
        • Minimizing Scope
        • Avoid variables with hidden meanings
        • Describe Motivations of Decisions
      • Structure and Interpretation of Computer Programs
        • Declarative and Imperative Knowledge
    • Articles
      • Two ways of constructing a software design
  • Design
    • Books
      • The Art of Unix Programming
        • The SPOT Rule
        • Rule of Clarity: Clarity is better than cleverness
      • Design Patterns
      • Agile Software Development, Principles, Patterns, and Practices
      • Patterns of Enterprise Application Architecture
      • Refactoring: Improving the Design of Existing Code
  • General
    • Books
      • The Pragmatic Programmer: From Journeyman to Master
        • Don't Repeat Yourself
      • Code Complete
      • Computer Systems: A Programmer's Perspective
  • Unit Test
    • Books
      • Test Driven Development: By Example
      • Working effectively with legacy code
  • Database
    • Books
      • Use The Index, Luke
    • Articles
      • Finding and Extracting SQLServer deadlock information using Extended Events
  • Troubleshooting
    • Debugging
      • First Chance Exception
      • Symbol Files
      • Visual Studio Debugging Tricks and Tips
        • Trace Point and Conditional Break Point
        • Remote Debugging
        • Postmortem Debugging of Dump Files
        • Use DotPeek as Symbol Server
        • Use Resharper to Generate Symbol Files
        • Learn Productivity Tips and Tricks for the Debugger in Visual Studio
        • 7 lesser known hacks for debugging in Visual Studio
        • View Threads and Tasks using the Parallel Stacks Window
        • How to navigate to source code of a 3rd party library using Resharper
        • Show Parameter Values in Call Stack Window
      • WinDbg
      • Windows Debugging and Troubleshooting
      • Mysteries of Memory Management Revealed,with Mark Russinovich
      • Malware Hunting with the Sysinternals Tools
    • Books
      • Advanced Windows Debugging
      • Advanced .NET Debugging
    • Tools
      • DotNet Decompilers
      • Fiddler
        • Configure Fiddler to Decrypt HTTPS Traffic
        • How to monitor web requests from localhost to localhost using Fiddler
      • WireShark
      • System Internals
        • Handle
        • ProcessMonitor
        • ProcessExp
        • RAMMap
      • PostMan
        • Postman AWS Signature Auth
      • Asmspy
  • CSharp
    • Books
      • Advanced .NET Debugging
      • CLR via C#
      • C# in Depth
    • Articles
      • Async/Await
        • There is no thread for Async I/O
        • Async/Await - Best Practices in Asynchronous Programming
      • Rethrow Exception
      • Different effects of bindingRedirect
      • About Messages and Message Queues
      • Directory.Build.props
      • Memory Limits in a .NET Process
      • Prefer Timespan
      • Document Outline View
  • Practical Git via GitExtensions
  • Misc
    • Books
    • Articles
      • Floating Point Accuracy
      • The Absolute Minimum about Unicode
      • Postfix/Prefix increment operator
      • How A Typo Screwed Up One Of History's Worst Video Games
  • UI/UX
    • Books
      • About Face: The Essentials of Interaction Design
  • Front End
    • Books
      • Stylin’ with CSS: A Designer’s Guide
    • Articles
      • Introduction to Basic CSS Selectors
      • How Browser Works
  • Productivity
    • Tools
      • Everything
      • ConEmu
      • Vim
      • Bash
        • Navigating Bash History with Ctrl+R
      • Customise Your Powershell
    • Books
      • Mastering Regular Expression
    • Text-Editing Keyboard Shortcuts
  • System
    • Windows Message Queue
    • Mysteries of Memory Management Revealed,with Mark Russinovich
Powered by GitBook
On this page

Was this helpful?

  1. Writing Better Code
  2. Books
  3. Code Complete

Describe Motivations of Decisions

PreviousAvoid variables with hidden meaningsNextStructure and Interpretation of Computer Programs

Last updated 6 years ago

Was this helpful?

Be wary of "we've always done it that way" justifications. One story goes that Beth wanted to cook a pot roast according to an award-winning pot roast recipe handed down in her husband's family. Her husband, Abdul, said that his mother had taught him to sprinkle it with salt and pepper, cut both ends off, put it in the pan, cover it, and cook it. Beth asked, "Why do you cut both ends off?" Adbul said, "I don't know. I've always done it that way. Let me ask my mother." He called her, and she said, "I don't know. I've always done it that way. Let me ask your grandmother." She called his grandmother, who said, "I don't know why you do it that way. I did it that way becuase it was too big to fit in my pan." – Quoted from

Code Complete 2nd edition Page 53