<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - code review tag</title>
  <link>http://www.codingthearchitecture.com/tags/code review/</link>
  <description>Software architecture for developers</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Mon, 09 Jan 2012 09:02:08 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>How good is good enough?</title>
    <link>http://www.codingthearchitecture.com/2008/03/14/how_good_is_good_enough.html</link>
    
      
        <description>
          &lt;p&gt;
I&#039;ve undertaken a couple of project reviews recently where I&#039;ve been asked to assess whether the code is &#034;good enough&#034;. All software systems have a real-world context and the project has to balance &lt;a href=&#034;http://www.ambysoft.com/essays/brokenTriangle.html&#034;&gt;scope, budget and schedule&lt;/a&gt;. With this mind, what is &#034;good enough&#034;? Kevin has &lt;a href=&#034;http://www.codingthearchitecture.com/2006/04/26/first_experiences.html&#034;&gt;touched upon this before&lt;/a&gt; and I&#039;ve talked about having &lt;a href=&#034;http://www.codingthearchitecture.com/2006/05/02/quality.html&#034;&gt;just enough quality&lt;/a&gt;, but what does having &#034;good enough&#034; code actually mean?
&lt;/p&gt;

&lt;p&gt;
Here are some of the questions that I try to answer.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is there a comprehensive set of automated unit tests, or evidence that the code has been unit tested (e.g. presence of boundary/null checks in the code)?&lt;/li&gt;
&lt;li&gt;Have good object oriented principles been adopted when putting together the design? For example, do classes have clear responsibilities?&lt;/li&gt;
&lt;li&gt;Have standard APIs and technologies been used? In other words, have any wheels been reinvented? If they have, is the alternative solution as good or better than the standard solution in this context?&lt;/li&gt;
&lt;li&gt;Does the codebase feel consistent, in terms of style and the approach to solving problems?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The last point raises some interesting questions. It&#039;s really easy to get carried away when doing code reviews and flag up a large number of points ranging from inconsistent code formatting and lack of comments through to using better APIs and the latest language features to solve problems. Given the real-world context in which the system exists, that piece of software needs to solve a business problem and points like these are fairly minor in nature&lt;sup&gt;1&lt;/sup&gt;. However, an inconsistent codebase can highlight those instances where there is an overall lack of explicit technical leadership.
&lt;/p&gt;

&lt;p&gt;
If you were to look at your own system, how would you decide whether the code was good enough?
&lt;/p&gt;

&lt;p class=&#034;small&#034;&gt;
&lt;sup&gt;1&lt;/sup&gt; Although it&#039;s arguable that points like these are minor in nature, I still think that it&#039;s important to ensure they are raised. Personally, I don&#039;t like to see things like this in the codebase for a system that I&#039;m responsible for, but you need to present findings from activities like code reviews as appropriate. These minor points are important for the development team, but not so important if the key project stakeholder is asking you whether the code is good enough.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you deliver software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/03/14/how_good_is_good_enough.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/03/14/how_good_is_good_enough.html</guid>
    <pubDate>Fri, 14 Mar 2008 11:11:38 GMT</pubDate>
  </item>
  
  </channel>
</rss>

