{"id":96,"date":"2015-08-19T01:06:48","date_gmt":"2015-08-19T01:06:48","guid":{"rendered":"http:\/\/www.jacobpike.com\/blog\/?p=96"},"modified":"2015-08-19T01:06:48","modified_gmt":"2015-08-19T01:06:48","slug":"mini-book-review-design-patterns-explained","status":"publish","type":"post","link":"http:\/\/www.jacobpike.com\/blog\/2015\/08\/19\/mini-book-review-design-patterns-explained\/","title":{"rendered":"Mini Book Review: Design Patterns Explained"},"content":{"rendered":"<p>I recently finished reading\u00a0<em><a href=\"http:\/\/www.amazon.com\/dp\/0321247140\/ref=cm_sw_r_tw_dp_ma90vb02PM735\">Design Patterns Explained<\/a><\/em>. \u00a0I&#8217;m not really going to do a full review of the book, but there were some helpful parts that seemed worth pointing out.<\/p>\n<p>In general, most of the book didn&#8217;t seem all that useful. \u00a0In particular, the chapters focusing on specific design patterns were the least appealing. \u00a0I can see situations where the general approach of a design pattern might be applicable, but specifics of a particular problem at hand likely would dictate a simpler variation of the pattern that could be derived without needing to specifically think about patterns.<\/p>\n<p>However, there were two particular chapters that I liked a lot and thought were really valuable.<\/p>\n<p>The first is chapter 8 &#8220;Expanding Our Horizons&#8221;. \u00a0There is lots of good discussion in this chapter, but the diagram showing how commonality and variability analysis relate to conceptual, specification, and implementation perspectives was a big highlight. \u00a0Thinking about a problem from the &#8220;conceptual&#8221; perspective helps me stay more focused in the problem domain when programming, and the other two perspectives help bridge the gap between the problem domain and crafting solid code.<\/p>\n<p>The next useful chapter was chapter 16 &#8220;The Analysis Matrix&#8221;. \u00a0Extending the ideas behind commonality and variability analysis, this chapter describes a practical, concrete tool that can easily be used to more clearly see commonalities and variations within a problem. \u00a0One particular benefit of this approach that I like is that I think it can be helpful to make sure you don&#8217;t overdesign flexibility into your program &#8211; the variations you actually need are right there in the matrix (table).<\/p>\n<p>There are other chapters in the book that may be useful. \u00a0However, most of the topics they cover were covered in the two chapters outlined above, and those two chapters do a great and better job of explaining the topics.<\/p>\n<p>So while most of\u00a0<em>Design Patterns Explained<\/em> didn&#8217;t seem too useful to me, I highly recommend checking out the two chapters mentioned above if you get the chance. \u00a0Definitely at least worth contemplating to see if they might be useful in certain situations.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I recently finished reading\u00a0Design Patterns Explained. \u00a0I&#8217;m not really going to do a full review of the book, but there were some helpful parts that seemed worth pointing out. In general, most of the book didn&#8217;t seem all that useful. \u00a0In particular, the chapters focusing on specific design patterns were the least appealing. \u00a0I can &hellip; <a href=\"http:\/\/www.jacobpike.com\/blog\/2015\/08\/19\/mini-book-review-design-patterns-explained\/\" class=\"more-link\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,14],"tags":[17,15],"class_list":["post-96","post","type-post","status-publish","format-standard","hentry","category-books","category-programming","tag-books","tag-programming"],"_links":{"self":[{"href":"http:\/\/www.jacobpike.com\/blog\/wp-json\/wp\/v2\/posts\/96","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.jacobpike.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.jacobpike.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.jacobpike.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.jacobpike.com\/blog\/wp-json\/wp\/v2\/comments?post=96"}],"version-history":[{"count":2,"href":"http:\/\/www.jacobpike.com\/blog\/wp-json\/wp\/v2\/posts\/96\/revisions"}],"predecessor-version":[{"id":98,"href":"http:\/\/www.jacobpike.com\/blog\/wp-json\/wp\/v2\/posts\/96\/revisions\/98"}],"wp:attachment":[{"href":"http:\/\/www.jacobpike.com\/blog\/wp-json\/wp\/v2\/media?parent=96"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.jacobpike.com\/blog\/wp-json\/wp\/v2\/categories?post=96"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.jacobpike.com\/blog\/wp-json\/wp\/v2\/tags?post=96"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}