{"id":2544,"date":"2017-12-17T14:54:31","date_gmt":"2017-12-17T20:54:31","guid":{"rendered":"http:\/\/www.mooreds.com\/wordpress\/?p=2544"},"modified":"2017-12-17T14:54:31","modified_gmt":"2017-12-17T20:54:31","slug":"functional-core-oo-shell","status":"publish","type":"post","link":"https:\/\/www.mooreds.com\/wordpress\/archives\/2544","title":{"rendered":"Functional Core, OO Shell"},"content":{"rendered":"<p><a href=\"https:\/\/www.destroyallsoftware.com\/talks\/boundaries\">This video<\/a> is about 30 minutes long.\u00a0 <a href=\"https:\/\/twitter.com\/mikegehard\">Mike Gehard<\/a> mentioned it to me, and I enjoyed the heck out of it.\u00a0 Many takeaways from this.\u00a0 One is is how using test doubles make sense at the beginning of a software project, but how it will eventually come back to bite you as the method signatures of dependencies change, and your tests don&#8217;t fail.\u00a0 Another is how you can write &#8216;fauxO&#8217;, a nice combination that has the strengths of functional programming and OO programming.\u00a0 A third is how and where integration tests make sense.<\/p>\n<p>Overall, what he proposes is that the boundary of any object that makes decisions have parameters that are simple values so that that it is always easy to unit test them.\u00a0 Out of this proposal fall several nice features.<\/p>\n<p>Well worth the time to watch.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This video is about 30 minutes long.\u00a0 Mike Gehard mentioned it to me, and I enjoyed the heck out of it.\u00a0 Many takeaways from this.\u00a0 One is is how using [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,32],"tags":[],"class_list":["post-2544","post","type-post","status-publish","format-standard","hentry","category-programming","category-video"],"_links":{"self":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/2544","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/comments?post=2544"}],"version-history":[{"count":2,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/2544\/revisions"}],"predecessor-version":[{"id":2546,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/2544\/revisions\/2546"}],"wp:attachment":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/media?parent=2544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/categories?post=2544"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/tags?post=2544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}