When Should You Use Functional Programming Vs Object Oriented Programming