The cpp code can be made a bit more neat by using your own defined functions:
byte AD5235::restoreRdac(byte nDac, int value)
_write( RESTORE_EEMEM_TO_RDAC_COMMAND, nDac, 0); <<< should the 0 be value?
It is not clear in this function why it has the parameter value.
Normally I build such a library in 3 layers to keep it maintainable.
1) Class public layer - These are to be called you the user of the lib
2) Class private layer - these are helpers to implement the public methods
3) Hardware abstraction layar
3) is the only place that contains IO with the hardware e.g. read/writes on pins etc, so if there is a change in the HW you only need to change it there
2) keeps the inner logic of the class hidden for the user
1) makes the class usable.
The above function would then be written as
public byte AD5235::restoreRdac(byte nDac, value)
command( RESTORE_EEMEM_TO_RDAC_COMMAND, nDac, 0);
// HAL LAYER
private byte AD5235::command(...) ...
private byte AD5235::enable() ...
private byte AD5235::disable() ...
command is a wrapper around the _write of course.
my 2 cents