Principles of good software design

Aatmaj - Sep 13 '21 - - Dev Community

Principles of good software design

  • Most programs spend their 90% time doing 10% instructions. Find this 10% and concentrate your efforts there.
  • Never code until specifications are precise and complete.
  • Sometimes postponing (algorithmic) problems simplifies their solution, just like it happens in recursive algorithms.
  • Choose the algorithm wisely according to the need. Unnecessary complication of algorithm doubles up the work. Dont choose a algorithm just because you know it. Keep your logic simple!
  • Keep your algorithms as simple as you can. When in doubt, choose the simple way
  • Consider time and space tradeoffs while deciding your algorithm.(Valid in many conditions even to this date.)
  • Be sure that the algorithm is correct before starting to code. For this, make a throwaway prototype and test the algorithm. At least verify the intricate parts of the algorithm.
  • If >40% code of a module gives errors, Rewrite the entire module again. Never be afraid to start over. Next time may be both shorter and easier than patchwork and bug-fixing. Starting afresh is easier than patching an old program
  • Act in haste and repent at leisure. Program in haste and debug forever!
  • Never optimize a program until it is correct and working.
  • Don't optimize code unless absolutely necessary.

Adapted from the book Data Structures and Program Design in C

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .