The Artima Developer Community
Sponsored Link

Agile Buzz Forum
A Different Class of Compression

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
James Robertson

Posts: 29924
Nickname: jarober61
Registered: Jun, 2003

David Buck, Smalltalker at large
A Different Class of Compression Posted: Dec 12, 2008 3:15 PM
Reply to this message Reply

This post originated from an RSS feed registered with Agile Buzz by James Robertson.
Original Post: A Different Class of Compression
Feed Title: Travis Griggs - Blog
Feed URL: http://www.cincomsmalltalk.com/rssBlog/travis-rss.xml
Feed Description: This TAG Line is Extra
Latest Agile Buzz Posts
Latest Agile Buzz Posts by James Robertson
Latest Posts From Travis Griggs - Blog

Advertisement

The public available tool "ClassCloning" has received a significant rewrite. The clone now happens in a single composite step (so undo should be atomic). And it duplicates the package locations of the constituent pieces.

There's also a new special form of Clone that shows up in the class menu only when you have a class and its superclass selected. It's called Blend. What it will do is create a clone of the two classes, collapsed into a single class. I spent some time playing with this at OOPSLA, and came to the conclusion (with agreement for the Master Refactorers, Don Roberts and John Brant), that you can't do this as a strict in place refactoring. So it's done as a clone.

Why though? Over time, class libraries have a way of factoring deeper and deeper. It happens for a variety of reasons. At one time, something was a specialization, and needed a subclass. Or perhaps a system needed multiple subtypes, and thus dictated an abstract type. Sometimes, these concerns go away. The specialization becomes the standard. One of the types becomes the default. But class hierarchies stay.

While abstraction and class inheritance are a powerful tool, they come at a price. They add complexity, at the level of understanding, as well as maintenance.

The VisualWorks library, not surprisingly, has areas of the class library that are like this. Lets say, we'd like to continue removing Mac OS (not OSX) specific classes. There's a whole bunch of MacOSWhatever classes for emulating the old Mac OS 9 Look and Feel. But we can't unload them, because many (all?) of our OSX Look and Feel classes are subclassed from them. The 'Blend' change can be used to create a duplicate heirarchy of the current OSX classes, with the MacOS stuff collapsed into them, and then put it in place of the old two sets. It can be used to finally collapse ApplicationWindow and ScheduledWindow. And maybe some other parts of the product that came to be this way.

Perhaps, if you'd like to look for opportunities to compress overly rich abstraction layers, you might look here for queries on class depths.

Read: A Different Class of Compression

Topic: Death of Network TV, Round 2 Previous Topic   Next Topic Topic: Sun gets Out-Maneuvered

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use