1. 10
  1.  

  2. 3

    In my experience, just the constraint on not having a “helper superclass” puts appropriate pressure on interfaces to be good.

    This elegantly puts to words my problem with a inheritance heavy codebase I currently have to work on.

    You should also realize that classes without an explicit interface still have an implicit interface, and thus the same statement still applies.

    1. 2

      This is what I hate about well-known Scala code bases like Apache Spark (I was into Delta Lake code last night). They use helper traits aggressively. It makes it difficult to track down exactly where a method implementation is without an IDE.