====== 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 ===== * [[collections:GRASP]] * [[collections:Robert C. Martin's Principle Collection]] * [[collections:Unix Philosophy (Eric S. Raymond)]] * [[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 ===== * [[http://c2.com/cgi/wiki|Portland Pattern Repository]] * [[principles:Don't Create Verb Classes]] * [[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:Principle of Essential Representation]] http://c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign * ... http://c2.com/cgi/wiki?search=rule http://c2.com/cgi/wiki?search=principle * Unix Philosophy * http://en.wikipedia.org/wiki/Unix_philosophy * 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]] * alternative version of the talk: http://www.youtube.com/watch?v=aAb7hSCtvGw * slides: http://lcsd05.cs.tamu.edu/slides/keynote.pdf * principle-like summary: http://www.infoq.com/articles/API-Design-Joshua-Bloch * 97 things * http://softarch.97things.oreilly.com/wiki/index.php/97_Things_Every_Software_Architect_Should_Know_-_The_Book * http://softarch.97things.oreilly.com/wiki/index.php/Other_Things_Software_Architects_Should_Know * 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://www.python.org/dev/peps/pep-0020/|The Zen of Python]] * Clean Code * LeBlanc's Law: Later equals never * Blocks should be one line long (p. 35) * Functtion names should not be just a restatement of the function implementation (p. 36) * Stepdown Rule (p. 136)