Think of your personal bank account experience When in doubt, go for the simplest solution
- Deposit and Withdrawal
- Transfer
- Account statement (date, amount, balance)
- Statement printing
- Statement filters (just deposits, withdrawal, date)
Statement should have transactions in the following format:
DATE | AMOUNT | BALANCE
10/04/2014 | 500.00 | 1400.00
02/04/2014 | -100.00 | 900.00
01/04/2014 | 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 {
public void deposit(int amount);
public void withdraw(int amount);
public void 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