logo
logo
Может, вычислять автоматически LRU поле? [Дим(м) 05/03/2015 12:11]
Извините, не нашёл удачного перевода для least recently used.
 
Идея в том, что программа будет пересчитывать поле, которое "не меняли дольше всего".
 
Для первого редактируемого поля я бы использовал такие правила:
а) если значения всех трёх полей отличны от 0, пересчитываем, как вы и описали выше (пересчитывается следующее поле, при редактировании курса пересчитывается сумма зачисления)
б) если в одном из двух других полей 0, пересчитывается оно
в) если 0 в обоих других полях, пересчитывать нечего
 
Когда пользователь редактирует значение какого-то второго поля, пересчитывается то поле, которое он ещё не трогал (третье).
 
Если же он решит отредактировать и третье, пересчитываем поле, отредактированное самом первым (т.е. least recently used).
 
Это, как мне кажется, вполне изящно решит ситуацию с сумма списания + курс.
Да и поведение здесь вполне ожидаемое: пользователь вводит данные не просто так - поэтому программа пытается сохранить введённые им значения как можно дольше.