<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - abstraction tag</title>
  <link>http://www.codingthearchitecture.com/tags/abstraction/</link>
  <description>Software architecture for hands-on software architects</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Fri, 26 Sep 2008 13:09:00 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>The Neverending Abstraction</title>
    <link>http://www.codingthearchitecture.com/2007/05/04/the_neverending_abstraction.html</link>
    
      
      
        <description>
          A common issue I see is the temptation to solve every problem by introducing an extra layer of abstraction. Abstractions aren&#039;t a problem in themselves but I&#039;m seeing situations where developers are trying to think of ever more bizarre situations (that either can&#039;t or won&#039;t occur) and then adding ever more levels of abstractions to take these into account.&lt;br /&gt;
&lt;br /&gt;
An example would be where you start with a Customer object and it has a name field - pretty simple and common. Then someone points out that a Customer and Employee are both People so you have a Person superclass and move the name field to there. Still looks OK but then someone points out that companies have names too so we have an object above Person called Entity and move the name there.&lt;br /&gt;
&lt;br /&gt;
Then the chaos starts. Someone else (not wanting to be outdone and wanting to prove they have elite OO skills) says that some virtual holding companies don&#039;t have names and instead only have company numbers, so the name itself is abstracted to be &#039;legalIdentifier&#039;.&lt;br /&gt;
&lt;br /&gt;
This leaves confused, maintenance programmers looking to populate the customer name field on a form with entity.getLegalIdentifier(). Is that their name, national security number, company ID etc? Who knows - it&#039;s not immediately obvious.&lt;br /&gt;
&lt;br /&gt;
Having many interfaces that only contain one method is a symptom as are superclasses with names like the following: Entity, SystemObject, BusinessObject etc. Do you have any more examples?&lt;p&gt;&lt;a href=&#034;http://www.codingthearchitecture.com/2007/05/04/the_neverending_abstraction.html&#034;&gt;Read more...&lt;/a&gt;&lt;/p&gt;
        </description>
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2007/05/04/the_neverending_abstraction.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2007/05/04/the_neverending_abstraction.html</guid>
    <pubDate>Fri, 04 May 2007 13:00:34 GMT</pubDate>
  </item>
  
  </channel>
</rss>
