Leroy was shocked when the source code appeared. It was familiar yet strange, like an old lover's kiss. The code was five years old – an artifact of Leroy's first project. Leroy slowly scrolled through the code and pondered his next move. It wasn't a bug that was bothering Leroy – there were no race conditions or tricky numerical conversions. No performance problems or uncaught error conditions. It was all about design …
public class BankAccount
{
public void Deposit(decimal amount)
{
_balance += amount;
LogTransaction("Deposited {0} on {1}", amount, DateTime.Now);
}
public void Withdraw(decimal amount)
{
_balance -= amount;
LogTransaction("Withdrew {0} on {1}", amount, DateTime.Now);
}
public void AccumulateInterest(decimal baseRate)
{
decimal interest;
if (_balance < 10000)
{
interest = _balance * baseRate;
}
else
{
interest = _balance * (baseRate + 0.01);
}
LogTransaction("Accumulated {0} interest on {1}", interest, DateTime.Now);
}
void LogTransaction(string message, params object[] parameters)
{
using(FileStream fs = File.Open("auditlog.txt", FileMode.OpenOrCreate))
using(StreamWriter writer = new StreamWriter(fs))
{
writer.WriteLine(message, parameters);
}
}
public decimal Balance
{
get { return _balance; }
set { _balance = value; }
}
decimal _balance;
}
"Times have changed, and so I have, fortunately", Leroy thought to himself. "And so will this code…"
To be continued…