{"id":263,"date":"2008-03-31T14:54:02","date_gmt":"2008-03-31T14:54:02","guid":{"rendered":"http:\/\/kubasek.com\/blog\/pragmatic_craftsman\/?p=263"},"modified":"2008-03-31T14:54:02","modified_gmt":"2008-03-31T14:54:02","slug":"criteria-for-good-design","status":"publish","type":"post","link":"https:\/\/pragmaticcraftsman.kubasek.com\/2008\/03\/31\/criteria-for-good-design\/","title":{"rendered":"Criteria for good design"},"content":{"rendered":"<p>Uncle Bob listed a few Design smells &#8212; the odors of rotting software in his book <em>Agile Software Development<\/em>. Take the inverse of that and what do you get? Criteria for good design &#8212; that&#8217;s the approach that the author of the book <em>PHP in Action<\/em> took.<\/p>\n<p>Here are the characteristics of good design.<\/p>\n<ol>\n<li>Flexibility &#8211; easy to change<\/li>\n<li>Robustness &#8211; hard to break<\/li>\n<li>Mobility &#8211; easy to disentagle into reusable components<\/li>\n<li>Fluidity &#8211; easy to do things right<\/li>\n<li>Simplicity<\/li>\n<li>Once and only once<\/li>\n<li>Transparency &#8211; easy to read and understand<\/li>\n<\/ol>\n<p>Very good criteria, in my opinion.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uncle Bob listed a few Design smells &#8212; the odors of rotting software in his book Agile Software Development. Take the inverse of that and what do you get? Criteria [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-263","post","type-post","status-publish","format-standard","hentry","category-architecture-design"],"_links":{"self":[{"href":"https:\/\/pragmaticcraftsman.kubasek.com\/wp-json\/wp\/v2\/posts\/263","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pragmaticcraftsman.kubasek.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pragmaticcraftsman.kubasek.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pragmaticcraftsman.kubasek.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pragmaticcraftsman.kubasek.com\/wp-json\/wp\/v2\/comments?post=263"}],"version-history":[{"count":0,"href":"https:\/\/pragmaticcraftsman.kubasek.com\/wp-json\/wp\/v2\/posts\/263\/revisions"}],"wp:attachment":[{"href":"https:\/\/pragmaticcraftsman.kubasek.com\/wp-json\/wp\/v2\/media?parent=263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pragmaticcraftsman.kubasek.com\/wp-json\/wp\/v2\/categories?post=263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pragmaticcraftsman.kubasek.com\/wp-json\/wp\/v2\/tags?post=263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}