<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Code Size is the Enemy?</title>
	<atom:link href="http://www.eriknovales.com/blog/index.php/2007/12/25/code-size-is-the-enemy/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.eriknovales.com/blog/index.php/2007/12/25/code-size-is-the-enemy/</link>
	<description>Game and Software Development, plus other stuff</description>
	<lastBuildDate>Wed, 06 Oct 2010 14:13:06 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Erik Novales</title>
		<link>http://www.eriknovales.com/blog/index.php/2007/12/25/code-size-is-the-enemy/comment-page-1/#comment-41</link>
		<dc:creator>Erik Novales</dc:creator>
		<pubDate>Sat, 29 Dec 2007 05:05:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.eriknovales.com/blog/index.php/2007/12/25/code-size-is-the-enemy/#comment-41</guid>
		<description>I think one common failing in a lot of APIs is the failure of the designer to actually think about how it is going to be used -- shocking, I know, but unfortunately way too common. One symptom of this is the &quot;kitchen sink&quot; API (in which the user is left to figure out which pieces go where in which order, at their peril). This is why I guess I associate massive APIs with poor design.

I think a couple of examples of &lt;B&gt;great&lt;/B&gt; API design are the APIs for the Miles Sound System and Bink movie player. Miles provides a &quot;quick&quot; API, which is extremely simple and powerful enough for many games, as well as a more complicated API for games with demanding sound requirements. The quick API is a good tradeoff between ease-of-use and power, but it doesn&#039;t limit the power of the library as a whole.

And as far as Bink goes, you can get basic functionality working in something like 10 lines of code, and doing more specialized stuff with movie playback isn&#039;t much more difficult. For a library that is doing a lot of stuff under the hood, it&#039;s amazingly easy to use.</description>
		<content:encoded><![CDATA[<p>I think one common failing in a lot of APIs is the failure of the designer to actually think about how it is going to be used &#8212; shocking, I know, but unfortunately way too common. One symptom of this is the &#8220;kitchen sink&#8221; API (in which the user is left to figure out which pieces go where in which order, at their peril). This is why I guess I associate massive APIs with poor design.</p>
<p>I think a couple of examples of <b>great</b> API design are the APIs for the Miles Sound System and Bink movie player. Miles provides a &#8220;quick&#8221; API, which is extremely simple and powerful enough for many games, as well as a more complicated API for games with demanding sound requirements. The quick API is a good tradeoff between ease-of-use and power, but it doesn&#8217;t limit the power of the library as a whole.</p>
<p>And as far as Bink goes, you can get basic functionality working in something like 10 lines of code, and doing more specialized stuff with movie playback isn&#8217;t much more difficult. For a library that is doing a lot of stuff under the hood, it&#8217;s amazingly easy to use.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeremy</title>
		<link>http://www.eriknovales.com/blog/index.php/2007/12/25/code-size-is-the-enemy/comment-page-1/#comment-40</link>
		<dc:creator>Jeremy</dc:creator>
		<pubDate>Thu, 27 Dec 2007 03:37:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.eriknovales.com/blog/index.php/2007/12/25/code-size-is-the-enemy/#comment-40</guid>
		<description>Yeah, I completely agree with you sentiment that things should be as simple as possible and no simpler, and that some things are just complex by nature.

Good design is a real trick - more an art than a science.  Dividing up functionality into modules and arranging APIs to fulfill needs and make sense requires not only clearheaded thinking but sometimes the ability to see into the future.

Suggested practices for good design try to solve problems of human nature: people would rather code than plan ahead and people don&#039;t like changing things they&#039;ve already written.  Traditional OO design requires the planning up front with less rework later while agile programming lets you do without the planning if you are willing to bravely rewrite huge swaths of code later. 

Size isn&#039;t always the dividing line between maintainable and non-maintainable.  I&#039;ve used large off-the-shelf products that are easy to reuse with clear APIs and ones that were hideous nightmares.  A little design talent goes a long way I think.</description>
		<content:encoded><![CDATA[<p>Yeah, I completely agree with you sentiment that things should be as simple as possible and no simpler, and that some things are just complex by nature.</p>
<p>Good design is a real trick &#8211; more an art than a science.  Dividing up functionality into modules and arranging APIs to fulfill needs and make sense requires not only clearheaded thinking but sometimes the ability to see into the future.</p>
<p>Suggested practices for good design try to solve problems of human nature: people would rather code than plan ahead and people don&#8217;t like changing things they&#8217;ve already written.  Traditional OO design requires the planning up front with less rework later while agile programming lets you do without the planning if you are willing to bravely rewrite huge swaths of code later. </p>
<p>Size isn&#8217;t always the dividing line between maintainable and non-maintainable.  I&#8217;ve used large off-the-shelf products that are easy to reuse with clear APIs and ones that were hideous nightmares.  A little design talent goes a long way I think.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

