Identification of Refused Bequest Code Smells - PowerPoint PPT Presentation

About This Presentation
Title:

Identification of Refused Bequest Code Smells

Description:

Identification of Refused Bequest Code Smells E. Ligu, A. Chatzigeorgiou, T. Chaikalis, N. Ygeionomakis Department of Applied Informatics University of Macedonia, Greece – PowerPoint PPT presentation

Number of Views:72
Avg rating:3.0/5.0
Slides: 10
Provided by: Alex457
Category:

less

Transcript and Presenter's Notes

Title: Identification of Refused Bequest Code Smells


1
Identification of Refused Bequest Code
Smells E. Ligu, A. Chatzigeorgiou, T.
Chaikalis, N. Ygeionomakis Department of Applied
Informatics University of Macedonia, Greece
ICSM2013, Early
Research Achievements Track, September 24, 2013
2
Context
In the world of OO systems, inheritance is not a
panacea
breatheAir() regulateBodyTemp()
giveBirthToLiveYoung() produceMilkIfFemale()
swim()
breatheAir() regulateBodyTemp()
giveBirthToLiveYoung() produceMilkIfFemale()
swim()
3
Problem
Goal Identification of Refused Bequest Code
Smells
Refused Bequest a subclass does not want to
support the interface inherited from its parent
class Fowler non-trivial problem to
resolve Appropriate Refactoring Replace
Inheritance with Delegation Famous quote
Favor Composition over Inheritance GoF
4
Key Concept
5
Smell Thermometer
  • Signs of Refused Bequest
  • no superclass method is overridden
  • no inherited method is invoked on subclass
    instances
  • no super class method invocations
  • No argument in favor of inheritance
  • Refused Bequest is highly improbable
  • inherited methods have been re-implemented to
    provide functionality that is specific to the
    subclass -gt goal is to enable polymorphism.
  • the presence of errors -gt inherited functionality
    is actually employed.

6
Example
SweetHome 3D v.4.0 LOC 76K, 460 classes, 69
hierarchies, 42 test cases
7
Tool
Implementation on top of the JDeodorant tool
http//java.uom.gr/ref_bequest/
8
Threat to Validity
Assumption unit tests exercise thoroughly system
functionality Threat to construct validity
introduced errors might not lead to test failures
because tests have not been designed to cause
the invocation of the corresponding methods and
not because the methods are not actually
utilized. Mitigation perform identification on
projects with extensive test coverage
9
Question 1 (academic) Would you trust an
automated tool to identify and resolve design
defects on its own? Question 2 (provocative) Do
you think that industrial engineers actually
regard the resolution of smells as a (serious)
way to improve the code?
ICSM2013, Early
Research Achievements Track, September 24, 2013
Write a Comment
User Comments (0)
About PowerShow.com