[Adium-devl] Contact Controller Refactoring
catfish.man at gmail.com
Wed Aug 8 03:45:06 UTC 2007
A little background for those just tuning in first;
AIContactController is widely considered to be the single scariest
class in Adium. It's complicated, it's critical to the application, it
violates encapsulation left and right (look at all those methods
marked "Private: for contact controller only"!), and up until earlier
this year did crazy stuff like casting AIListGroups to AIMetaContacts.
Refactoring it into something clean and shiny would be a huge win for
the maintainability of the project.
After discussion on irc today about the above, I wrote up a
brainstorming document for a new contact controller API. Currently I'm
not even touching on implementation. There's a lot of private methods
in the contact controller as well, and things like metacontact on-disk
storage to consider. This is just API. Peter and I have discussed it
(which resulted in much new hotness being added for discussion!), so
now I'm turning it loose: http://dscoder.com/contactcontrollerapithoughts.txt
Suggested reading methodology: Open AIContactControllerProtocol.h
next to this document, and compare each thing there to the proposed
new design. If it's missing, consider why and/or where else it might
be (I've tried to describe moves, but I'm sure I left some out).
More information about the Adium-devl