[Adium-devl] Contact Controller Refactoring

David Smith 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).


												David




More information about the devel mailing list