Original Post
I am designing an open source instant messaging client. I know not to just jump in and start coding. It is completely plugin-based within reason. However this is my first real independent project and its hard to know when to throw in the towel as far as inelegance/compromises that inevitably arise, esp. since I''ve been reading a lot of ''academia''-type OOP books.
Big question:
I have a base Plugin class that is abstract. In addition, I inherit from that in the ProtocolPlugin class. ProtocolPlugins represent a single network connection to an instant messaging server, handling the encoding/decoding. Although, it seems like ProtocolPlugin does too much, having a network connection AND doing encoding/decoding. Perhaps I should make a Connection class that is separate?
Littler questions:
I package everything together in an Engine object that handles the coupling between the different managers. Is this how it''s normally done?
Plugins need to access portions of the engine. Should I package them up as references in a Link object and send it down when the object is created?
My goals are code that is readable, understandable, and flexible enough to allow future revisions.
I appreciate any comments you might have, I feel like I''m thrashing around in the dark at times.