Think of your personal bank account experience When in doubt, go for the simplest solution
- Deposit and Withdrawal
- Account statement (date, credit, debit, balance)
- Statement printing
- Transfer to another account
- Statement filters (just deposits, withdrawal, date)
Statement should have transactions in the following format:
date | credit | debit | balance
14/01/2012 | | 500.00 | 2500.00
13/01/2012 | 2000.00 | | 3000.00
10/01/2012 | 1000.00 | | 1000.00
- One level of indentation per method
- Don’t use the 'else' keyword
- Wrap all primitives and Strings
- First class collections
- One dot per line
- Don’t abbreviate
- Keep all entities small (50 lines)
- No classes with more than two instance variables
- No getters/setters/properties
Note: Start with an acceptance test through the Account class:
public class Account {
deposit(amount);
withdraw(amount);
printStatement();
}
You are not allowed to add any other methods to that class
- Object Calisthenics pdf
- Object Calisthenics (full book), Jeff Bay in: The ThoughtWorks Anthology. Pragmatic Bookshelf 2008
- Original idea for the kata: How Object-Oriented Are You Feeling Today? - Krzysztof Jelski (Session on the Software Craftsmanship UK 2011 conference)
- sample solution: https://github.com/sandromancuso/Bank-kata.git