<?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: The final problem</title>
	<atom:link href="http://www.gridshore.nl/2008/06/23/the-final-problem/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gridshore.nl/2008/06/23/the-final-problem/</link>
	<description>A weblog about software engineering, Architecture, Technology an other things we like.</description>
	<lastBuildDate>Thu, 19 Aug 2010 21:06:48 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: Uri</title>
		<link>http://www.gridshore.nl/2008/06/23/the-final-problem/comment-page-1/#comment-1700</link>
		<dc:creator>Uri</dc:creator>
		<pubDate>Tue, 24 Jun 2008 00:27:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.gridshore.nl/2008/06/23/the-final-problem/#comment-1700</guid>
		<description>Nicely written!

While adding Design-By-Contract (DBC) constructs to the language is a great idea, it is also quite dangerous as it can easily be misused. Moreover, one should really watch out how far DBC should be applied. As you probably know (assuming you wrote some Eiffel code), applying DBC as Bertrand actually meant it is great in theory but falls short in practice (it is not that easy and intuitive task to apply DBC correctly). So I would say that adding these constructs, although powerful, may eventually bring more hard than good (just look how easily people misuse the final keyword... yeah... a final setter.. thats a first for me). Further more, I do think that the final keyword has a place and can be used in scenarios where pre/post conditions (along with in/variants) cannot really help out. For example, providing some functional computation which cannot change by definition in order to implement a &quot;correct&quot; implementation. Yes, pre/post condition can help you assure in/variants states but sometimes you just don&#039;t want the client of your code to even &quot;play around&quot; with some code. When used properly, within a well designed API, the final keyword should also not stand in the way of the &quot;Opened/Closed Principle&quot;. This is also the case where &quot;interface oriented design&quot; helps quite a bit.

Anyway, it&#039;s a great and well written post which definitely makes you think... thanks.

Uri</description>
		<content:encoded><![CDATA[<p>Nicely written!</p>
<p>While adding Design-By-Contract (DBC) constructs to the language is a great idea, it is also quite dangerous as it can easily be misused. Moreover, one should really watch out how far DBC should be applied. As you probably know (assuming you wrote some Eiffel code), applying DBC as Bertrand actually meant it is great in theory but falls short in practice (it is not that easy and intuitive task to apply DBC correctly). So I would say that adding these constructs, although powerful, may eventually bring more hard than good (just look how easily people misuse the final keyword&#8230; yeah&#8230; a final setter.. thats a first for me). Further more, I do think that the final keyword has a place and can be used in scenarios where pre/post conditions (along with in/variants) cannot really help out. For example, providing some functional computation which cannot change by definition in order to implement a &#8220;correct&#8221; implementation. Yes, pre/post condition can help you assure in/variants states but sometimes you just don&#8217;t want the client of your code to even &#8220;play around&#8221; with some code. When used properly, within a well designed API, the final keyword should also not stand in the way of the &#8220;Opened/Closed Principle&#8221;. This is also the case where &#8220;interface oriented design&#8221; helps quite a bit.</p>
<p>Anyway, it&#8217;s a great and well written post which definitely makes you think&#8230; thanks.</p>
<p>Uri</p>
]]></content:encoded>
	</item>
</channel>
</rss>
