Making a library to increase a function with analog value

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);
}