From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by yquem.inria.fr (Postfix) with ESMTP id 795B2BB84 for ; Sat, 17 Jan 2009 14:23:25 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AiACAPtqcUnUnw6TlGdsb2JhbACCO5FJAQEBAQkLCAkRBLdrhXM X-IronPort-AV: E=Sophos;i="4.37,280,1231110000"; d="scan'208";a="22628856" Received: from ptb-relay03.plus.net ([212.159.14.147]) by mail1-smtp-roc.national.inria.fr with ESMTP/TLS/AES256-SHA; 17 Jan 2009 14:23:25 +0100 Received: from [87.113.104.168] (helo=leper.local) by ptb-relay03.plus.net with esmtp (Exim) id 1LOB92-00036W-DH for caml-list@yquem.inria.fr; Sat, 17 Jan 2009 13:23:24 +0000 From: Jon Harrop Organization: Flying Frog Consultancy Ltd. To: caml-list@yquem.inria.fr Subject: Re: [Caml-list] C++/C# inheritance is bad? Date: Sat, 17 Jan 2009 13:27:18 +0000 User-Agent: KMail/1.9.9 References: In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200901171327.19141.jon@ffconsultancy.com> X-Plusnet-Relay: ce503c7dd823966792802465ea4fac7c X-Spam: no; 0.00; workarounds:01 multimethods:01 2009:98 disturbing:98 disturbing:98 sealed:98 frog:98 wrote:01 caml-list:01 inherit:01 rarely:02 inheritance:03 inheritance:03 correctly:04 correctly:04 On Friday 16 January 2009 15:18:50 Kuba Ober wrote: > So, when correctly applied, what's so disturbing about inheritance? Inheritance is disturbing because, in general, it cannot be applied correctly. That is why there are so many workarounds, many of which do not even exist in C++ like final methods, sealed classes, multimethods, extractors and so on. OO is not good in all circumstances and other tools can be preferable. IME, OO is only very rarely the best solution and it is only chosen so often because it is typically the only solution available (e.g. in C++ or Java). > You inherit only where it makes sense, and if it makes sense then you don't > care about which particular method is called: it's supposed to be safe. Safety is quite different from easy of use, of course. -- Dr Jon Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/?e