<?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-13967713.post4967524377527429317..comments</id><updated>2012-02-03T09:49:42.191+01:00</updated><category term='AOP'/><category term='tools'/><category term='engineering'/><category term='process'/><category term='HCI'/><category term='quote'/><category term='multithreading'/><category term='UML'/><category term='multicore'/><category term='oop'/><category term='COM'/><category term='poll'/><category term='announce'/><category term='cloud'/><category term='algorithms'/><category term='concurrency'/><category term='profession'/><category term='form'/><category term='ASP.NET'/><category term='GUI'/><category term='C#'/><category term='C++'/><category term='article reference'/><category term='agile'/><category term='NOSD'/><category term='metrics'/><category term='analysis'/><category term='generics'/><category term='free time'/><category term='coding'/><category term='pattern'/><category term='real options'/><category term='windows'/><category term='link'/><category term='design'/><category term='quality'/><category term='modeling'/><category term='book reference'/><category term='project management'/><category term='requirements'/><category term='architecture'/><category term='teaching'/><category term='estimation'/><category term='database'/><category term='.NET'/><category term='thinking'/><category term='language design'/><title type='text'>Comments on Carlo Pescio - blog: Your coding conventions are hurting you</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.carlopescio.com/feeds/4967524377527429317/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html'/><author><name>Carlo.Pescio</name><uri>http://www.blogger.com/profile/12652284939993729858</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><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13967713.post-8348263426931988297</id><published>2012-02-03T09:49:42.191+01:00</published><updated>2012-02-03T09:49:42.191+01:00</updated><title type='text'>We have [at least] two ways to fix this. The simpl...</title><content type='html'>We have [at least] two ways to fix this. The simplest way is to identify a decent domain concept, like SalesCategory (since cargoes are grouped by a category known to the SMS). So our code would be like (using Java and short variable names):&lt;br /&gt;&lt;br /&gt;SalesCategory sc = new SalesCategory( cargo ) ;&lt;br /&gt;EnterpriseSegment es = sc.getEnterpriseSegment();&lt;br /&gt;Quantity q = cargo.quantityBooked( es ) ;&lt;br /&gt;Boolean ok = sc.mayAccept( q ) ;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve kept the book terminology and signatures. Having a class nicely scales to the most reasonable evolutions, like asking for how much could be actually booked when a cargo is rejected, etc.&lt;br /&gt;&lt;br /&gt;The second way to fix it goes much deeper. Of course, the most &amp;quot;natural&amp;quot; place for those functions is the Cargo itself. We don&amp;#39;t want to put them there because those responsibilities are not strictly part of &amp;quot;our&amp;quot; application domain. They&amp;#39;re placed on a boundary with the sales management system. Well, that&amp;#39;s a linguistic problem, isn&amp;#39;t it. It&amp;#39;s because we look at the problem through the rather narrow perspective of statically typed languages with closed classes. So a different solution is to allow objects to be supplemented when needed. This is possible (in limited ways) in objective C, in C# (with extension methods), and soon in Java 8 as well (http://blogs.oracle.com/briangoetz/resource/devoxx-lang-lib-vm-co-evol.pdf). &lt;br /&gt;Stretching the idea a little, we come into the concepts of subjet-oriented programming, and ultimately in the realm of aspect-oriented programming. Stepping on the philosophical soapbox for a moment, Alan Kay used to say that he expected Smalltalk to be just a step in an evolutionary chain, something other people would improve upon, but that didn&amp;#39;t happen. I actually consider AOP+OOP the next step, providing much of the flexibility that we currently lack. I see no problem in having my cargo enhanced with more responsibilities (methods) when used within the context of the Booking Application.&lt;br /&gt;A theme I&amp;#39;d like to discuss at some point: mainstream languages keep reinforcing the idea that in order to separate the artifacts (source files) we have to separate the run-time instances (objects). That&amp;#39;s a byproduct of languages and technologies, and it&amp;#39;s not inherent in a paradigm.&lt;br /&gt;&lt;br /&gt;Trying to answer your question now: I use services in some of my architectures, meaning the SOA notion of services. The interface of those services (which are usually called from remote systems) is &lt;b&gt;not&lt;/b&gt; OO, because I&amp;#39;m doing services, not distributed objects. The implementation of those services, however, is usually OO, not procedural. Even the infrastructure of those services is OO, as there is much to be gained from that. So, in a word, no, I do not agree, sorry :-).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/8348263426931988297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/8348263426931988297'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1328258982191#c8348263426931988297' title=''/><author><name>Carlo.Pescio</name><uri>http://www.blogger.com/profile/12652284939993729858</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.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-377659270'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-1047428423702838438</id><published>2012-02-03T09:49:30.244+01:00</published><updated>2012-02-03T09:49:30.244+01:00</updated><title type='text'>An in-depth discussion of DDD and some of its choi...</title><content type='html'>An in-depth discussion of DDD and some of its choices would take at least an entire (long) post, so I&amp;#39;ll try to avoid theory and go straight to the practice. That is, I&amp;#39;ll take a couple of examples from the DDD book and tinker with them.&lt;br /&gt;(the answer turned out so long anyway that I had to split it into two comments :-)))&lt;br /&gt;Example 1 (simple)&lt;br /&gt;&lt;i&gt;&amp;quot;For example, if an application needs to send an e-mail, some message-sending interface can be located in the infrastructure layer and the application layer elements can request the transmission of the message. This decoupling gives some extra versatility. The message-sending interface might be connected to an e-mail sender, a fax sender, or whatever else is available.&amp;quot;&lt;/i&gt; (page 73, unfortunately is not on google books)&lt;br /&gt;So one may proceed with an EmailSender or FaxSender service. Sorry, that sucks :-). There is a nice OO abstraction there, waiting to be found. It&amp;#39;s called MailBox, or OutBox if we&amp;#39;re only concerned with sending. &lt;br /&gt;Now, we can easily contend that I&amp;#39;m just fiddling with words here, but I&amp;#39;m not. The reason I want OO concepts to emerge is that it&amp;#39;s way more natural to add responsibilities to an OO concept like the MailBox than to the EmailSender. Because in practice, you&amp;#39;ll also want to configure the mailbox. You want to know the current state (queued messages, failures, whatever). You may want to specify a callback function to be called when some message has been delivered. Etc etc.&lt;br /&gt;&lt;br /&gt;Lest someone thinks that I&amp;#39;m making this up, let&amp;#39;s move forward a few pages (181 and following, it&amp;#39;s partially on google books http://books.google.it/books?id=7dlaMs0SECsC&amp;amp;lpg=PP1&amp;amp;dq=domain%20driven%20design&amp;amp;pg=PA181#v=onepage&amp;amp;q&amp;amp;f=false but most of it is missing)&lt;br /&gt;An external Sales Management System is wrapped by a service, called AllocationChecker. The initial responsibility seems function-like: given a cargo, how much of this type of cargo may be booked?. After a short discussions, however, the allocation checker takes on two responsibilities: &lt;br /&gt;- deriveEnterpriseSegment(Cargo) [which provides a way to translate concepts from the SMS domain into our own concepts]&lt;br /&gt;- mayAccept( Cargo, Quantity)&lt;br /&gt;&lt;br /&gt;Now, are we seriously going to ask an AllocationChecker to deriveEnterpriseSegment? It just doesn&amp;#39;t fit. Moreover, a few pages down the AllocationChecker is potentially becoming stateful so that it can cache the enterprise segments. Besides, the service is crying to be an object: it&amp;#39;s taking a Cargo on every call (feature envy).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/1047428423702838438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/1047428423702838438'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1328258970244#c1047428423702838438' title=''/><author><name>Carlo.Pescio</name><uri>http://www.blogger.com/profile/12652284939993729858</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.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-377659270'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-2317151457182350659</id><published>2012-02-02T13:22:09.159+01:00</published><updated>2012-02-02T13:22:09.159+01:00</updated><title type='text'>Thanks for an illuminating article on naming.

Rea...</title><content type='html'>Thanks for an illuminating article on naming.&lt;br /&gt;&lt;br /&gt;Reading your article made me think of domain-driven design and &amp;quot;Services&amp;quot; in particular. From my understanding, services are typically stateless and inherently procedural in nature.&lt;br /&gt;&lt;br /&gt;Would you agree that these should not follow your naming rules, and that even when working within the OO paradigm there are parts of the system that are best modelled procedurally, by using services, for example?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/2317151457182350659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/2317151457182350659'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1328185329159#c2317151457182350659' title=''/><author><name>Steve</name><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://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-342622634'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-2073235065837205208</id><published>2011-10-12T17:12:26.114+02:00</published><updated>2011-10-12T17:12:26.114+02:00</updated><title type='text'>Just a couple of days ago I was watching a video b...</title><content type='html'>Just a couple of days ago I was watching a video by Kevlin Henney on infoQ (http://www.infoq.com/presentations/It-Is-Possible-to-Do-OOP-in-Java, from 39:00) where he covers your point about finding good names.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/2073235065837205208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/2073235065837205208'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1318432346114#c2073235065837205208' title=''/><author><name>Fulvio.Esposito</name><uri>http://www.blogger.com/profile/04630127186004942157</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02755327984360126873'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='31' src='http://2.bp.blogspot.com/_HXw-L5xTzpk/SqDEAWrWc-I/AAAAAAAAAUg/RyPdd6jsyUg/S220/disney+robin+hood.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-276213240'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-7247106424465781462</id><published>2011-10-02T20:16:38.888+02:00</published><updated>2011-10-02T20:16:38.888+02:00</updated><title type='text'>Yeap, I guess I&amp;#39;d have to redesign JSF from th...</title><content type='html'>Yeap, I guess I&amp;#39;d have to redesign JSF from the ground up :-) to fix that. Of course, one could start by wondering why we can&amp;#39;t just rename EditableValueHolder into &amp;quot;input&amp;quot; and start from there...&lt;br /&gt;&lt;br /&gt;In fact, the JSF is a perfect example of &amp;quot;bad abstraction&amp;quot; (in the sense of my &lt;a href="http://www.carlopescio.com/2011/06/cut-red-wire.html" rel="nofollow"&gt;&amp;quot;cut the red wire&amp;quot;&lt;/a&gt; post) where concepts have been abstracted to the point where they bear little resemblance with the problem domain. It&amp;#39;s not impossible to fix, but a complete overhaul would be needed...</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/7247106424465781462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/7247106424465781462'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1317579398888#c7247106424465781462' title=''/><author><name>Carlo.Pescio</name><uri>http://www.blogger.com/profile/12652284939993729858</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.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-377659270'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-1362731465403787672</id><published>2011-10-01T08:35:53.975+02:00</published><updated>2011-10-01T08:35:53.975+02:00</updated><title type='text'>Looking for bad examples in Java, just found

java...</title><content type='html'>Looking for bad examples in Java, just found&lt;br /&gt;&lt;br /&gt;javax.faces.view.EditableValueHolderAttachedObjectHandler&lt;br /&gt;&lt;br /&gt;I think even you can’t help it.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/1362731465403787672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/1362731465403787672'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1317450953975#c1362731465403787672' title=''/><author><name>tonsky</name><uri>http://www.blogger.com/profile/10718331770250736016</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.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-559033449'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-3919593965128387002</id><published>2011-09-30T16:42:32.408+02:00</published><updated>2011-09-30T16:42:32.408+02:00</updated><title type='text'>I would quibble about your grammar complaints--the...</title><content type='html'>I would quibble about your grammar complaints--there&amp;#39;s a long tradition and a consistent system underlying names like &amp;quot;MarshalByRefObject&amp;quot;. (&amp;quot;We marshal these objects by reference.&amp;quot; becomes &amp;quot;This is the marshal-by-reference style of marshaling.&amp;quot;, which becomes &amp;quot;These are marshal-by-reference objects.&amp;quot; The original is probably the call-by-value/call-by-reference distinction.)&lt;br /&gt;&lt;br /&gt;Other than that, great article. Anything to avoid another AbstractKeywordRemovalInitiatorFactory....</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/3919593965128387002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/3919593965128387002'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1317393752408#c3919593965128387002' title=''/><author><name>Aaron Davies</name><uri>http://www.blogger.com/profile/05334056755840192313</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.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-651452976'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-4114542433864301154</id><published>2011-09-28T23:34:23.933+02:00</published><updated>2011-09-28T23:34:23.933+02:00</updated><title type='text'>Couldn&amp;#39;t resist: IEnumerator -&amp;gt; Position, F...</title><content type='html'>Couldn&amp;#39;t resist: IEnumerator -&amp;gt; Position, ForwardPosition, SlidingPosition, IncrementalPosition...&lt;br /&gt;&lt;br /&gt;Position.value() looks good to me.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/4114542433864301154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/4114542433864301154'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1317245663933#c4114542433864301154' title=''/><author><name>Anonymous</name><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://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-12566280'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-8751719353386630256</id><published>2011-09-26T23:01:50.305+02:00</published><updated>2011-09-26T23:01:50.305+02:00</updated><title type='text'>&lt;i&gt;wouldn&amp;#39;t one assume that the single purpose...</title><content type='html'>&lt;i&gt;wouldn&amp;#39;t one assume that the single purpose of these classes is to hold the definitions of the lexical grammar and the syntax? &lt;/i&gt;&lt;br /&gt;---&lt;br /&gt;No, unless one thinks of a class as a data structure. The behavior / responsibility of a class is exposed through meaningful &lt;b&gt;methods&lt;/b&gt; like Check, BuildExpressionTree, etc etc for a Syntax class.&lt;br /&gt;&lt;br /&gt;The issue with Controller is well known: you easily end up with a godlike-class controlling a lot of stupid classes. That&amp;#39;s why so many people preach about having a skinny controller and a fat object model: because most people tend to do exactly the opposite (you never have to preach something people are already keen on doing). Unfortunately, all the logic you put in a controller is usually not reusable (controllers are normally highly customized).&lt;br /&gt;&lt;br /&gt;I began this post with a quote from Alan Kay, one of the founding fathers of OOP. I think that whoever is honestly interested in appreciating the nuances of object orientations should spend some time pondering on early works like that. I certainly did, both because of age :-) and because I don&amp;#39;t subscribe to the notion that being &amp;quot;modern&amp;quot; means rejecting the past :-).&lt;br /&gt;&lt;br /&gt;As an aside: I failed to mention that I don&amp;#39;t consider procedural programming intrinsecally &amp;quot;wrong&amp;quot; or &amp;quot;evil&amp;quot;. I expect some properties from procedural code, and different properties from OO code. For instance, procedural code is often structurally simpler compared to OO code, has less delocalized plans, etc. &lt;br /&gt;What I consider wrong is claiming that something is OO when it is, in fact, procedural.  Fake OO code gives me the worst of both worlds. That&amp;#39;s evil :-).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/8751719353386630256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/8751719353386630256'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1317070910305#c8751719353386630256' title=''/><author><name>Carlo.Pescio</name><uri>http://www.blogger.com/profile/12652284939993729858</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.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-377659270'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-4585640952442626052</id><published>2011-09-26T21:43:14.478+02:00</published><updated>2011-09-26T21:43:14.478+02:00</updated><title type='text'>If you were to rename Lexer to LexicalGrammar or P...</title><content type='html'>If you were to rename Lexer to LexicalGrammar or Parser to Syntax, wouldn&amp;#39;t one assume that the single purpose of these classes is to hold the &lt;b&gt;definitions&lt;/b&gt; of the lexical grammar and the syntax? That is, as opposed to actually being classes that &lt;b&gt;do&lt;/b&gt; something.&lt;br /&gt;Or would that be a result of procedural thinking as well?&lt;br /&gt;&lt;br /&gt;Honestly, I can&amp;#39;t seem to find the issue with names like Parser or Controller. Maybe I just have a wrong concept of what Object Oriented Programming actually entails. If so, I would honestly like to be educated on the subject.&lt;br /&gt;&lt;br /&gt;Maybe I don&amp;#39;t think Procedural Programming is Very Evil, as some OOP-preachers seem to say, and hence am not disgusted by names like IEnumerator.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/4585640952442626052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/4585640952442626052'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1317066194478#c4585640952442626052' title=''/><author><name>Anonymous</name><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://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-354615584'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-2081372143626178299</id><published>2011-06-10T17:08:24.948+02:00</published><updated>2011-06-10T17:08:24.948+02:00</updated><title type='text'>Sliding Window...well after got it, it seems obvio...</title><content type='html'>Sliding Window...well after got it, it seems obvious :S!!&lt;br /&gt;Just as marginal note...maybe a SlidingItem could be good if we don&amp;#39;t wanna change the interface and furthermore it can remind us that we are visiting a collection :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/2081372143626178299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/2081372143626178299'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1307718504948#c2081372143626178299' title=''/><author><name>Fulvio.Esposito</name><uri>http://www.blogger.com/profile/04630127186004942157</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02755327984360126873'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='31' src='http://2.bp.blogspot.com/_HXw-L5xTzpk/SqDEAWrWc-I/AAAAAAAAAUg/RyPdd6jsyUg/S220/disney+robin+hood.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-276213240'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-7309148369988278763</id><published>2011-06-10T17:06:57.846+02:00</published><updated>2011-06-10T17:06:57.846+02:00</updated><title type='text'></title><content type='html'>This comment has been removed by the author.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/7309148369988278763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/7309148369988278763'/><author><name>Fulvio.Esposito</name><uri>http://www.blogger.com/profile/04630127186004942157</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02755327984360126873'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='31' src='http://2.bp.blogspot.com/_HXw-L5xTzpk/SqDEAWrWc-I/AAAAAAAAAUg/RyPdd6jsyUg/S220/disney+robin+hood.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.contentRemoved' value='true'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-276213240'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-7134104342632707749</id><published>2011-06-05T10:08:54.075+02:00</published><updated>2011-06-05T10:08:54.075+02:00</updated><title type='text'>Note: I&amp;#39;m not claiming this is the &amp;quot;perfe...</title><content type='html'>Note: I&amp;#39;m not claiming this is the &amp;quot;perfect&amp;quot; name. It&amp;#39;s a reasonable name that is not overly focused on the procedural aspect of moving.&lt;br /&gt;&lt;br /&gt;That said: a very common name for (c) in my previous picture is &amp;quot;moving window&amp;quot; or &amp;quot;sliding window&amp;quot; because it represents a window over a larger data set / sequence. Now, the difference between (b) and (c) is that the window is restricted to a single value. So, SlidingValue seems like a sensible name.&lt;br /&gt;&lt;br /&gt;As an aside, a SlidingValue class would suggest a different interface. It&amp;#39;s ugly to ask a SlidingValue for its Value :-), it should BE a Value.&lt;br /&gt;&lt;br /&gt;About your question: sometimes, that&amp;#39;s the natural consequence of single implementation inheritance. The (mild) pressure to add mixins or traits (not C++ traits) to SII languages is coming out directly from this kind of discomfort.&lt;br /&gt;Having an interface in place is also handy for testing, and you may not want to inherit from the abstract class in that case.&lt;br /&gt;Sometimes, however, the interface-abstract-concrete layering is just the consequence of blindly following &amp;quot;rules&amp;quot; and putting interfaces everywhere, without a real need. Context, as always, is the key :-)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/7134104342632707749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/7134104342632707749'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1307261334075#c7134104342632707749' title=''/><author><name>Carlo.Pescio</name><uri>http://www.blogger.com/profile/12652284939993729858</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.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-377659270'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-5340526173817628208</id><published>2011-05-28T20:38:03.334+02:00</published><updated>2011-05-28T20:38:03.334+02:00</updated><title type='text'>I&amp;#39;m not confident i&amp;#39;ll ever find out the n...</title><content type='html'>I&amp;#39;m not confident i&amp;#39;ll ever find out the names so if the author will give the solution I really appreciate :D&lt;br /&gt;As a side thought, I was thinking about your statement &amp;quot;an interface can&amp;#39;t really do stuff&amp;quot;. So many times I see different project that separate interfaces from an abstract base class implementation that in the end is required as a base to each interface implementors, something like have a Figure as interface and then an AbstractFigure as an abstract class that factors common base implementation and then concrete figures derived from AbstractFigure. What do you think about that?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/5340526173817628208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/5340526173817628208'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1306607883334#c5340526173817628208' title=''/><author><name>Fulvio.Esposito</name><uri>http://www.blogger.com/profile/04630127186004942157</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02755327984360126873'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='31' src='http://2.bp.blogspot.com/_HXw-L5xTzpk/SqDEAWrWc-I/AAAAAAAAAUg/RyPdd6jsyUg/S220/disney+robin+hood.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-276213240'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-9110150390656608412</id><published>2011-05-04T19:58:08.887+02:00</published><updated>2011-05-04T19:58:08.887+02:00</updated><title type='text'>mmm i discarded cursor &amp;#39;cause  it&amp;#39;s really...</title><content type='html'>mmm i discarded cursor &amp;#39;cause  it&amp;#39;s really similar to iterator (well I knew the solution had to be harder :)&lt;br /&gt;&lt;br /&gt;But even after your picture I can&amp;#39;t figure out how to name something that provide access to an element in a sequence and can move forward.&lt;br /&gt;&lt;br /&gt;Honestly I can&amp;#39;t find a name even for c) (it reminds me of &amp;quot;slice&amp;quot; but it&amp;#39;s not the answer, I know. Maybe I&amp;#39;m so tired my brain is off anyway)&lt;br /&gt;For now I give up...but I will try again in a more relaxed moment.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/9110150390656608412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/9110150390656608412'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1304531888887#c9110150390656608412' title=''/><author><name>Fulvio.Esposito</name><uri>http://www.blogger.com/profile/04630127186004942157</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02755327984360126873'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='31' src='http://2.bp.blogspot.com/_HXw-L5xTzpk/SqDEAWrWc-I/AAAAAAAAAUg/RyPdd6jsyUg/S220/disney+robin+hood.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-276213240'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-1413520967322328026</id><published>2011-05-04T15:41:21.084+02:00</published><updated>2011-05-04T15:41:21.084+02:00</updated><title type='text'>In reverse order:

Anonymous : feel free to improv...</title><content type='html'>In reverse order:&lt;br /&gt;&lt;br /&gt;Anonymous : feel free to improve my wording :-)&lt;br /&gt;&lt;br /&gt;Previous Anonymous: cursor, or the slightly more precise/verbose ForwardCursor, is indeed a reasonable option (it was also my first idea when I thought of alternative names for IEnumerator). Some would say that -or is not much better than -er (in some languages there is in fact no difference) but I still like Cursor more.&lt;br /&gt;&lt;br /&gt;Fulvio: this may seem too much &amp;quot;dead poet society&amp;quot; :-)), like &amp;quot;stand on your desk to see things in a different way&amp;quot;, but I actually think that the (traditional) choice of &amp;quot;head&amp;quot;, &amp;quot;iterator&amp;quot;, &amp;quot;cursor&amp;quot; etc comes from focusing too much on that thing that moves, and too little on the underlying value.&lt;br /&gt;&lt;br /&gt;Consider &lt;a href="http://www.eptacom.net/blog/IEnumerator.png" rel="nofollow"&gt;this picture&lt;/a&gt;: it seems like most people think of (a) when presented with the concept, focusing too much on that little thing on top, and their choice of names is heavily influenced from that.&lt;br /&gt;&lt;br /&gt;What if you draw it like (b)? Does that suggest you any alternative?&lt;br /&gt;&lt;br /&gt;Since we&amp;#39;re playing with this little problem, what if I change the picture (and therefore the concept) to (c)? Does it remind you of something? It&amp;#39;s a known structure in computer science, used (with different names) in a few algorithms but also in operating systems (also at the kernel API level). A good name for (c) may suggest a good name for (b), which after all is a special case of (c).&lt;br /&gt;&lt;br /&gt;(of course, it&amp;#39;s much easier to turn off our brain and call it an IEnumerator, or an iterator, despite the fact that by itself is not enumerating or iterating at all; curiously enough, I&amp;#39;ve lately discovered that the wikipedia page on iterator includes a similar critic of name :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;About the constraint checker: this is not the kind of exercise that you can solve with an educated guess :-). You actually have to design that thing to really understand the forcefield and come up with good names. Still: why is not a Constrained object checking its own constraints? Why is a checker needed at all (note that I&amp;#39;ve subtly, but intentionally, moved from IConstrained to Constrained, because an interface can&amp;#39;t really do stuff :-).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/1413520967322328026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/1413520967322328026'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1304516481084#c1413520967322328026' title=''/><author><name>Carlo.Pescio</name><uri>http://www.blogger.com/profile/12652284939993729858</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.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-377659270'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-2876336696327966154</id><published>2011-04-30T12:49:22.105+02:00</published><updated>2011-04-30T12:49:22.105+02:00</updated><title type='text'>umh, Object think-er, sound sooo like procedural ;...</title><content type='html'>umh, Object think-er, sound sooo like procedural ;-)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/2876336696327966154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/2876336696327966154'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1304160562105#c2876336696327966154' title=''/><author><name>Anonymous</name><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://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-811251601'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-2239972380558072047</id><published>2011-04-26T21:21:24.940+02:00</published><updated>2011-04-26T21:21:24.940+02:00</updated><title type='text'>IEnumerator -&amp;gt; Cursor?</title><content type='html'>IEnumerator -&amp;gt; Cursor?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/2239972380558072047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/2239972380558072047'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1303845684940#c2239972380558072047' title=''/><author><name>Anonymous</name><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://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1591982200'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-3583702939385976113</id><published>2011-04-26T19:49:39.962+02:00</published><updated>2011-04-26T19:49:39.962+02:00</updated><title type='text'>mmm well, about IEnumerator, the only image I can ...</title><content type='html'>mmm well, about IEnumerator, the only image I can think of it&amp;#39;s the head (IEnumerator) to read a magnetic tape (the sequence).&lt;br /&gt;&lt;br /&gt;For ConstraintChecker, I have to think about it a little more, but some hints could be useful...&lt;br /&gt;&lt;br /&gt;what is triggering a &amp;quot;checker&amp;quot;? I believe a change of state inside the object. (Am I right?)&lt;br /&gt;&lt;br /&gt;What is the difference between a checker and a Constrained? the constrained is an object subjected to contraints, the checker (from a procedural thinking view) has the responsibility to validate constratints.&lt;br /&gt;&lt;br /&gt;mmm i&amp;#39;m a little bit confused on this part of the story...</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/3583702939385976113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/3583702939385976113'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1303840179962#c3583702939385976113' title=''/><author><name>Fulvio.Esposito</name><uri>http://www.blogger.com/profile/04630127186004942157</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02755327984360126873'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='31' src='http://2.bp.blogspot.com/_HXw-L5xTzpk/SqDEAWrWc-I/AAAAAAAAAUg/RyPdd6jsyUg/S220/disney+robin+hood.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-276213240'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-4292009366443805692</id><published>2011-04-26T16:37:03.321+02:00</published><updated>2011-04-26T16:37:03.321+02:00</updated><title type='text'>Guys: thanks :-)

Fulvio: I&amp;#39;ll start with the ...</title><content type='html'>Guys: thanks :-)&lt;br /&gt;&lt;br /&gt;Fulvio: I&amp;#39;ll start with the simple stuff. Compiler construction is often approached with an half-hearted OO approach, where a recursive descendent parser is built using inheritance, but after that, it&amp;#39;s all procedural programming.&lt;br /&gt;However, it&amp;#39;s quite simple to fix, basically like Peter Coad said: remove the -er, look for the &amp;quot;managed&amp;quot; object and put the responsibilities there.&lt;br /&gt;Lexer -&amp;gt; LexicalGrammar&lt;br /&gt;Parser -&amp;gt; Syntax&lt;br /&gt;etc.&lt;br /&gt;About the million dollar question, I&amp;#39;m afraid I don&amp;#39;t know any. Maybe I&amp;#39;m spending too little time reading code :-).&lt;br /&gt;About the exercises:&lt;br /&gt;ForwardStride sort of loses part of the responsibility (providing the current value). I&amp;#39;d suggest that you try drawing a picture of the sequence and of that &amp;quot;thing&amp;quot; you are trying to name. Not a UML diagram, but a visual representation of the concept. See if you get a reasonably precise picture and if that reminds you of something :-)&lt;br /&gt;The ConstraintChecker requires an overall design, you can&amp;#39;t just try a name without assigning responsibilities. Hint: what is triggering a &amp;quot;checker&amp;quot;? What is the difference between a checker and a Constrained?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/4292009366443805692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/4292009366443805692'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1303828623321#c4292009366443805692' title=''/><author><name>Carlo.Pescio</name><uri>http://www.blogger.com/profile/12652284939993729858</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.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-377659270'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-5360479429003369120</id><published>2011-04-23T17:57:05.348+02:00</published><updated>2011-04-23T17:57:05.348+02:00</updated><title type='text'>Some interesting and true facts, thanks for an ent...</title><content type='html'>Some interesting and true facts, thanks for an entertaining and educative read</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/5360479429003369120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/5360479429003369120'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1303574225348#c5360479429003369120' title=''/><author><name>Yann Cébron</name><uri>http://www.blogger.com/profile/05610864080103021020</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='http://1.bp.blogspot.com/_uSNfP6s7wVw/SdpUSGbAl-I/AAAAAAAAD_U/C7zR8HN1oXw/S220/yann.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1377611713'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-5721243269648528661</id><published>2011-04-22T14:17:35.730+02:00</published><updated>2011-04-22T14:17:35.730+02:00</updated><title type='text'>Naming classes and methods the right way (ie, the ...</title><content type='html'>Naming classes and methods the right way (ie, the OOP way) is really something I still find rather hard. Your article was both informative and entertaining (3 cheers for the OT!).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/5721243269648528661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/5721243269648528661'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1303474655730#c5721243269648528661' title=''/><author><name>Anonymous</name><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://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2099233438'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-1237076714658219224</id><published>2011-04-22T11:32:33.869+02:00</published><updated>2011-04-22T11:32:33.869+02:00</updated><title type='text'>Ok, risking a public mortification, I try to do th...</title><content type='html'>Ok, risking a public mortification, I try to do the exercises :)&lt;br /&gt;&lt;br /&gt;IEnumerator -&amp;gt; ForwardStride&lt;br /&gt;&lt;br /&gt;ConstraintsChecker -&amp;gt; ConstraintsSatisfaction&lt;br /&gt;&lt;br /&gt;Exercises apart, thanks for the post. I haven&amp;#39;t managed to read most of the &amp;#39;classics&amp;#39; yet, I really need to improve my time management :S&lt;br /&gt;But let me ask a one billion question...Is there just one software that can claim to be Object Oriented (obviously I&amp;#39;m talking about something with public evidence)? Even in Design Patterns there are many of them called something-or (mediator, iterator, decorator, visitor) that resemble functional programming with &amp;#39;fancier constructs&amp;#39;. Many areas of computer science have a solid background theory based on functional decomposition (I&amp;#39;m thinking about compiler construction, for instance, where Parser, Lexer, ASTBuilder are main concept).&lt;br /&gt;Sadly, it seems that a lot of OO gurus have taken this path :(</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/1237076714658219224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/1237076714658219224'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1303464753869#c1237076714658219224' title=''/><author><name>Fulvio.Esposito</name><uri>http://www.blogger.com/profile/04630127186004942157</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02755327984360126873'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='31' src='http://2.bp.blogspot.com/_HXw-L5xTzpk/SqDEAWrWc-I/AAAAAAAAAUg/RyPdd6jsyUg/S220/disney+robin+hood.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-276213240'/></entry><entry><id>tag:blogger.com,1999:blog-13967713.post-1617266109088764529</id><published>2011-04-21T20:38:47.230+02:00</published><updated>2011-04-21T20:38:47.230+02:00</updated><title type='text'>Oop is fine as long as you don&amp;#39;t allocate them...</title><content type='html'>Oop is fine as long as you don&amp;#39;t allocate them (see Google&amp;#39;s recommendations) and don&amp;#39;t activate method code iwhen retrieving values (kills performance). Also, avoid dependencies to classes of the same or higher level or your code will corrupt. Oh, and keep things simple, the KISS principle.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/1617266109088764529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13967713/4967524377527429317/comments/default/1617266109088764529'/><link rel='alternate' type='text/html' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html?showComment=1303411127230#c1617266109088764529' title=''/><author><name>Anonymous</name><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://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html' ref='tag:blogger.com,1999:blog-13967713.post-4967524377527429317' source='http://www.blogger.com/feeds/13967713/posts/default/4967524377527429317' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1124218698'/></entry></feed>
