Naming a class that processes orders
- by p.campbell
I'm in the midst of refactoring a project. I've recently read Clean Code, and want to heed some of the advice within, with particular interest in Single Responsibility Principle (SRP).
Currently, there's a class called OrderProcessor in the context of a manufacturing product order system.
This class is currently performs the following routine every n minutes:
check database for newly submitted + unprocessed orders (via a Data Layer class already, phew!)
gather all the details of the orders
mark them as in-process
iterate through each to:
perform some integrity checking
call a web service on a 3rd party system to place the order
check status return value of the web service for success/fail
email somebody if web service returns fail
constantly log to a text file on each operation or possible fail point
I've started by breaking out this class into new classes like:
OrderService - poor name. This is the one that wakes up every n minutes
OrderGatherer - calls the DL to get the order from the database
OrderIterator (? seems too forced or poorly named) -
OrderPlacer - calls web service to place the order
EmailSender
Logger
I'm struggling to find good names for each class, and implementing SRP in a reasonable way.
How could this class be separated into new class with discrete responsibilities?