In large systems, inheritance could theoretically shrink the codebase, but rarely does. Composition is superior because it breaks down problems+complexity into simpler parts. Prioritise understandability over less code. Having an "is-a" relationship sounds good, but is not a use case.
For me, a use case needs to solve a real existing problem, where there is no superior solution.

#SoftwareDevelopment #CodeQuality #InheritanceVsComposition #CleanCode #SoftwareArchitecture #ComplexityReduction