With a little forethought, we can effectively build a flexible class. We have to think of what the plugin is meant to do (and what it isn't meant to do), what options will be helpful, and the basic logic of how the plugin will work.
Often, it is helpful to invest some time in writing down necessary information about a plugin you're about to write. Your notes can be the blueprint of what you're building, and also serve as a great way to conceptualize the code logic of the plugin. I call this document a design sheet.
This design sheet can also help greatly when we finalize our code's documentation, and for preparation of the plugin for public release. The design sheet can change; you may realize that there are more options that you need in order to make the plugin truly customizable, and there may be options that you thought would be good to have, but would just be overkill in the final product.
Before we begin any writing, we're going to design our plugin, so grab your...