Thanks for the links about Command/Query separation!

The idea of ```MovieList#add``` is actually from ```ActiveRecord::Base#save```. I want to use the return value (true/false) to let the user know if he adds the movie successfully or not.

After reading the links, I think that separating the two idea is a better and cleaner design. But inside the ```MovieList#add```, I still want to check if the argument is duplicated or not. Because I believe that ```MovieList#add```, as an API, should have the responsibility to protect the internal data from messed up by the user.

When I try to implement the new method, how to handle bad argument comes into question. Should I just neglect it or throw an exception? Which one will you choose? Or, you have a better idea? :smile: