User Tools

Site Tools


wiki:wish_list

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
wiki:wish_list [2013-01-11 16:06] – Taxomania Rule christianwiki:wish_list [2013-10-06 17:57] – clean code christian
Line 1: Line 1:
 ====== Wish List ====== ====== Wish List ======
 +
 +===== Stubs =====
 +
 +:!: There are still many principle descriptions that are only stubs, which means major parts are missing: [[wiki:stub?do=backlink|List of Stubs]]
 +
  
 ===== Incomplete Principle Collections ===== ===== Incomplete Principle Collections =====
Line 6: Line 11:
   * [[collections:Robert C. Martin's Principle Collection]]   * [[collections:Robert C. Martin's Principle Collection]]
   * [[collections:Unix Philosophy (Eric S. Raymond)]]   * [[collections:Unix Philosophy (Eric S. Raymond)]]
-===== Places Where Further Principles May Hide =====+  * [[collections:Principles in "Object-Oriented Software Construction"]] 
 +  * [[collections:Principles in "The Pragmatic Programmer"]] 
 + 
 + 
 +===== Further Principles ===== 
 + 
 +  * [[principles:Don't Write Code To Find Code]] -- origin unknown 
 +  * [[principles:Minimize Intellectual Distance]] -- generalization of [[principles:Model Principle|MP]]; see also Davis: "201 Principles of Software Development" 
 +  * [[principles:You Ain't Gonna Need It]] (YAGNI) -- see [[principles:Keep It Simple Stupid|KISS]] 
 +  * [[principles:Once And Only Once]] (OAOO) -- see [[principles:Don't Repeat Yourself|DRY]] 
 +  * http://en.wikipedia.org/wiki/Composition_over_inheritance 
 +  * Fowler's First Law of Distributed Object Design (see "Patterns of Enterprise Pattlication Architecture p. 89") 
 +  * Form follows function 
 + 
 +==== Places Where Further Principles May Hide =====
  
-  * Bertrand Meyer: //[[http://en.wikipedia.org/wiki/Object-Oriented_Software_Construction|Object-Oriented Software Construction]]// 
-    * [[principles:Single Choice Principle]] 
-    * [[principles:Linguistic Modular Units]] 
-    * [[principles:Few Interfaces]] 
-    * [[principles:Small Interfaces]] 
-    * [[principles:Self-Documentation Principle]] 
-    * [[principles:Uniform Access Principle]] 
-    * [[principles:Command-Query Separation]] see also:  http://martinfowler.com/bliki/CommandQuerySeparation.html 
-    * [[principles:Symbolic Constant Principle]] 
-    * [[principles:Taxomania Rule]] 
-    * ... 
-    * :!: Create a principle collection for the principles in this book :!: 
-  * Andrew Hunt and David Thomas: //[[http://pragprog.com/the-pragmatic-programmer/extracts/tips|The Pragmatic Programmer]]// 
-    * [[principles:Program Close To The Problem Domain]] 
-    * [[principles:Crash Early]] 
-    * [[principles:Configure, Don't Integrate]] 
-    * [[principles:Put Abstractions In Code, Details In Metadata]] 
-    * [[principles:Separate Views From Models]] 
-    * [[principles:Eliminate Effects Between Unrelated Things]] (Orthogonality) 
-    * ... 
-    * :!: Create a principle collection for the principles in this book :!: 
   * [[http://c2.com/cgi/wiki|Portland Pattern Repository]]   * [[http://c2.com/cgi/wiki|Portland Pattern Repository]]
     * [[principles:Don't Create Verb Classes]]     * [[principles:Don't Create Verb Classes]]
-    * [[principles:Don't Name Classes Object Manager Handler Or Data]]+    * [[principles:Don't Name Classes Object Manager Handler Or Data]] (see also Clean Code p. 25)
     * [[principles:Behavioral Completeness]] http://c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign     * [[principles:Behavioral Completeness]] http://c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign
     * [[principles:Principle of Essential Representation]] http://c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign     * [[principles:Principle of Essential Representation]] http://c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign
Line 37: Line 35:
   * Unix Philosophy   * Unix Philosophy
     * http://en.wikipedia.org/wiki/Unix_philosophy     * http://en.wikipedia.org/wiki/Unix_philosophy
-    * :!: Create one or---maybe better---several principle collections :!:+    * http://www.catb.org/~esr/writings/taoup/html/ch01s06.html
   * Joshua Bloch: [[http://www.infoq.com/presentations/effective-api-design|How to Design a Good API & Why it Matters]]   * Joshua Bloch: [[http://www.infoq.com/presentations/effective-api-design|How to Design a Good API & Why it Matters]]
     * alternative version of the talk: http://www.youtube.com/watch?v=aAb7hSCtvGw     * alternative version of the talk: http://www.youtube.com/watch?v=aAb7hSCtvGw
Line 47: Line 45:
     * http://programmer.97things.oreilly.com/wiki/index.php/Contributions_Appearing_in_the_Book     * http://programmer.97things.oreilly.com/wiki/index.php/Contributions_Appearing_in_the_Book
     * http://programmer.97things.oreilly.com/wiki/index.php/Other_Edited_Contributions     * http://programmer.97things.oreilly.com/wiki/index.php/Other_Edited_Contributions
- +  * [[http://www.python.org/dev/peps/pep-0020/|The Zen of Python]] 
-===== Further Principles ===== +  * Clean Code 
- +    * LeBlanc's LawLater equals never 
-  * [[principles:Don't Write Code To Find Code]] (origin unknown) +    * Blocks should be one line long (p. 35
-  * [[principles:Encapsulate The concept That varies]] (See GoF book+    * Functtion names should not be just a restatement of the function implementation (p. 36)
wiki/wish_list.txt · Last modified: 2013-10-23 22:48 by christian