FYI, see http://sites.google.com/a/chromium.org/dev/developers/design-documents/conventions-and-patterns-for-multi-platform-development
for a breakdown of the two patterns. -Ben On Mon, Jun 22, 2009 at 10:22 PM, Ben Goodger (Google)<[email protected]> wrote: > Porting bits of UI like dialog boxes by creating a > platform-independent base class and subclassing for each platform is > now no longer allowed. > > In C++, inheritance is something to be used carefully. You should > create a subclass only when the derived class is a logical > specialization. That one class contains cross platform state for a bit > of UI and another class contains that platform-specific UI does not > mean that the latter is a logical specialization of the former. > > Overuse of inheritance makes the code harder to follow and understand, > and Brett and I in particular have spent a lot of time over the past > few months correcting this throughout the Chrome front end. > > If you are creating UI on another platform and want to reuse common > code, please move the common code into a separate object that the > platform specific UI owns. This applies to changes you're currently > working on, too. > > e.g., I just redid the Task Manager to fit this pattern. There are two > frontends for it currently, TaskManagerView (windows) and > TaskManagerGtk (linux). Both have a TaskManager object that they use > to populate themselves. > > It is always more convenient for native code in a particular frontend > to directly create its own UI components, rather than having to go > through a factory method. > > If you need any advice on the feature you're working on, please let me > know. I'm more than happy to discuss. > > We should also correct existing instances of the undesirable pattern > soon. As I discover them, I'll be emailing the people responsible. If > you know of any, please let me know. > > -Ben > --~--~---------~--~----~------------~-------~--~----~ Chromium Developers mailing list: [email protected] View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~----------~----~----~----~------~----~------~--~---
