**Code Smells** are often signs that refactoring could be needed. That is not always the case, but these "smells" should be looked at further to determine if there is a need for refactoring.
* Force: Refactoring may be possible when it is noticed that there are many hard-coded values and and seemingly random literals scattered throughout the code.
* Solution: It may be possible to give these vauge "magic numbers" variable names to make the code easier to read, understand, test, and maintain.
**Feature Envy**
* Force: Refactoring may be possible when it is noticed that a certian object seems to have significantly more features than other objects it is interacting with.
* Solution: It may be possible to had work off to some of these smaller objects. If the original object is reaching out to grab things that are much easier access and handled by the secondary object, than a consideration should be made to give that work to the secondary object.