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
-~----------~----~----~----~------~----~------~--~---

Reply via email to