in C++ Programming Style Cargill discusses poorly designed classes, showing examples, discussing their flaws and how to improve them
consider
// -----------------------------------------------------------------------------
class AnalogIncrease {
double _min;
double _delLo;
double _thresh;
double _delHi;
double _max;
double _val;
public:
AnalogIncrease (double min,
double delLo,
double thresh,
double delHi,
double max )
{
_min = min,
_delLo = delLo,
_thresh = thresh,
_delHi = delHi,
_max = max;
_val = 0;
}
double value (void) { return _val; };
double update (double val) {
if (_val < val) {
Serial.print (_val);
Serial.print (" < ");
Serial.print (val);
Serial.println (" greater");
}
if ( _thresh < val)
_val += _val < val ? _delHi : -_delHi;
else
_val += _val < val ? _delLo : -_delLo;
return _val;
};
};
AnalogIncrease ai (10, 1, 50, 5, 100);
// -----------------------------------------------------------------------------
void loop (){
char s [40];
if (Serial.available ()) {
int n = Serial.readBytesUntil ('\n', s, sizeof(s));
s [n] = 0;
Serial.println (ai.update (atof(s)));
}
}
// -----------------------------------------------------------------------------
void setup () {
Serial.begin (9600);
}