• shallow modules is one whose interface is complicated relative to the functionality it provides shallow modules don’t help much in the battle against complexity because the benefit they provide is negated by the cost of learning and using their interfaces.
  • pass-through methods
  • conjoined methods: It should be possible to understand each method independently. If you can’t understand the implementation of one method without also understanding the implementation of another, that’s a red flag. this flag can occur in other contexts as well as if two pieces of code are physically separated, but each can only be understood by looking at the other It is a red flag