<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-7442262522977329981.post3417327235884404827..comments</id><updated>2011-04-05T13:55:41.825-05:00</updated><category term='mocks'/><category term='education'/><category term='Nancy'/><category term='MVC'/><category term='SQL'/><category term='the profession of programming'/><category term='DRY'/><category term='extension methods'/><category term='software development'/><category term='programming language theory'/><category term='TDD'/><category term='Win8'/><category term='configuration'/><category term='humility'/><category term='software engineering'/><category term='internet'/><category term='windows'/><category term='professional development'/><category term='windows services'/><category term='programming languages'/><category term='OpenRasta'/><category term='Nina'/><category term='WinForms'/><category term='structuremap'/><category term='data binding'/><category term='computer science'/><category term='LINQ'/><category term='dependency injection'/><category term='SRP'/><category term='business'/><category term='research'/><category term='lazy programming'/><category term='metablogging'/><category term='REST'/><category term='patterns'/><category term='programming'/><category term='culture'/><category term='meanderings'/><category term='best practices'/><category term='noob'/><category term='COM'/><category term='web services'/><category term='Sinatra'/><category term='object lifetime'/><category term='Martin'/><category term='inversion of control'/><category term='C#'/><category term='WinRT'/><category term='surviving winforms'/><category term='WCF'/><category term='persistence'/><category term='AngularJS'/><category term='templating'/><category term='unit testing'/><category term='RestPoint'/><category term='ADO .NET'/><category term='JavaScript'/><category term='castle windsor'/><category term='test first'/><category term='autofac'/><category term='.NET'/><title type='text'>Comments on Turbulent Intellect: Take "Single Responsibility" to the Next Level</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.turbulentintellect.com/feeds/3417327235884404827/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7442262522977329981/3417327235884404827/comments/default'/><link rel='alternate' type='text/html' href='http://www.turbulentintellect.com/2011/04/take-single-responsibility-to-next.html'/><author><name>Chris Ammerman</name><uri>https://profiles.google.com/118440544456036580001</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-t5aQOwp6ZmE/AAAAAAAAAAI/AAAAAAAAACs/uUZHes1MRlI/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7442262522977329981.post-7715165774656143124</id><published>2011-04-05T13:55:41.825-05:00</published><updated>2011-04-05T13:55:41.825-05:00</updated><title type='text'>Alex,

Assembly proliferation worries people, and ...</title><content type='html'>Alex,&lt;br /&gt;&lt;br /&gt;Assembly proliferation worries people, and I think that the reason for this isn&amp;#39;t completely ill-founded. An assembly is more opaque than a class. It feels like a firmer boundary. It sends a message, and that shouldn&amp;#39;t be discounted. Such boundaries should be constructed with great care. It&amp;#39;s important that they be meaningful.&lt;br /&gt;&lt;br /&gt;I think that people too often use the number of assemblies as a proxy measurement for complexity, or for appropriateness of divisions. But they do this because they&amp;#39;ve been burned before, and it has been a reliable indicator. However, when broken out very deliberately, and for the purpose of separation of concerns/responsibilities, I think that there is nothing inherently dangerous about it.&lt;br /&gt;&lt;br /&gt;One big challenge in solutions with a lot of projects is that of complex dependency networks. This doesn&amp;#39;t mean there are too many projects/assemblies, however. Rather it means that responsibilities are not well-separated. With a many-project solution, layers of responsibility should emerge, where you can draw lines through (see the little graph image in my &lt;a href="http://www.turbulentintellect.com/2011/03/yagni-abuse.html" rel="nofollow"&gt;&amp;quot;Yagni Abuse&amp;quot;&lt;/a&gt; post) and show that as a rule, dependencies only go in one direction across a layer boundary, and preferably don&amp;#39;t cross more than one layer boundary.&lt;br /&gt;&lt;br /&gt;If you can&amp;#39;t identify layers like this, if you have more of a net, or cycles, then responsibilities are being spread around too much. You may have good decoupling, but not enough &lt;b&gt;cohesion&lt;/b&gt;. That is the real thing to keep watch of. Separate your projects/assemblies all you want, but keep an eye on your cohesion, because that&amp;#39;s what holds everything together in the right way and protects against chaos. =)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7442262522977329981/3417327235884404827/comments/default/7715165774656143124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7442262522977329981/3417327235884404827/comments/default/7715165774656143124'/><link rel='alternate' type='text/html' href='http://www.turbulentintellect.com/2011/04/take-single-responsibility-to-next.html?showComment=1302029741825#c7715165774656143124' title=''/><author><name>Chris Ammerman</name><uri>http://www.blogger.com/profile/13199328747453354231</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.turbulentintellect.com/2011/04/take-single-responsibility-to-next.html' ref='tag:blogger.com,1999:blog-7442262522977329981.post-3417327235884404827' source='http://www.blogger.com/feeds/7442262522977329981/posts/default/3417327235884404827' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-326150198'/></entry><entry><id>tag:blogger.com,1999:blog-7442262522977329981.post-901959280102508522</id><published>2011-04-05T13:23:40.856-05:00</published><updated>2011-04-05T13:23:40.856-05:00</updated><title type='text'>I&amp;#39;ve found that SRP and composition go well to...</title><content type='html'>I&amp;#39;ve found that SRP and composition go well together and I&amp;#39;ve found that often times if my classes get much longer than 100 lines that I&amp;#39;m likely missing opportunities to identify violations of SRP that can be solved through composition.&lt;br /&gt;&lt;br /&gt;I&amp;#39;m currently struggling with SRP at the project level. There&amp;#39;s sufficient temptation and even pressure to reduce the number of assemblies a project references but I&amp;#39;ve found that some of the cleanest code I&amp;#39;ve read/written usually has a lot of external dependencies where each library focuses on addressing one limited area. What are your thoughts on this kind of application of SRP?&lt;br /&gt;&lt;br /&gt;Nice post!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7442262522977329981/3417327235884404827/comments/default/901959280102508522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7442262522977329981/3417327235884404827/comments/default/901959280102508522'/><link rel='alternate' type='text/html' href='http://www.turbulentintellect.com/2011/04/take-single-responsibility-to-next.html?showComment=1302027820856#c901959280102508522' title=''/><author><name>Alex</name><uri>http://www.blogger.com/profile/06478435817434716597</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.turbulentintellect.com/2011/04/take-single-responsibility-to-next.html' ref='tag:blogger.com,1999:blog-7442262522977329981.post-3417327235884404827' source='http://www.blogger.com/feeds/7442262522977329981/posts/default/3417327235884404827' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1701587866'/></entry></feed>
