To best answer your question I suggest to not answer it ;)
Or more precisely: Encapsulate what varies.
As you right now do not know how / where to store your settings, create objects that are providing an interface to your store and that are hiding the whole storing away from the rest of your plugin.
Some example code:
interface myStore {
const PREFIX = 'myStore';
public function get($name);
public function set($name, $value);
}
/**
* option storage: all in one wordpress option
*/
class myStore_Options implements myStore {
private $data = null;
private $optionName = '';
private init() {
if (null===$this->data) {
$this->optionName = myStore::PREFIX.'_options';
$this->data = get_option($this->optionName, array());
}
}
public function get($name) {
if (array_key_exists($this->data, $name)
return $this->data[$name];
return '';
}
public function set($name, $value) {
$this->data[$name] = $value;
update_option($this->optionName, $this->data);
}
}
$store = new MyStore_Options();
Everywhere in your code you can then use $store->get('settingName')
regardless of which storage layer you implement.
You can now create another myStore_xxxx class implementing the myStore interface, e.g. for the styles. It will work exactly the same, but you can put the styles to somewhere else.
Normally you only need to read and write settings, so you would only need two functions here in the interface.
You can then - over time or while you continue to extend the number of options values / styles - change the storage methodology w/o affecting your plugin code.