Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Is this code smell?
#1
Is it considered bad practice to have a higher level code pass messages through one layer of abstraction? Like this:

Code:
class HigherAbstraction:
  def __init__(self):
    self.bar = LowerAbstraction()

  def Spam(self):
    return self.bar.Spam()

class LowerAbstraction:
  def Spam(self):
    return 1

this = HigherAbstraction()
this.Spam()

Is there a way that this can be better factored? Sometimes I have to create several different HigherAbstraction types of classes where all instances of HigherAbstraction also could use functionality from LowerAbstraction.
Reply
#2
codes have scent?
Reply
#3
Fiel Wrote:Is it considered bad practice to have a higher level code pass messages through one layer of abstraction? Like this:

Code:
class HigherAbstraction:
  def __init__(self):
    self.bar = LowerAbstraction()

  def Spam(self):
    return self.bar.Spam()

class LowerAbstraction:
  def Spam(self):
    return 1

this = HigherAbstraction()
this.Spam()

Is there a way that this can be better factored? Sometimes I have to create several different HigherAbstraction types of classes where all instances of HigherAbstraction also could use functionality from LowerAbstraction.

Code:
class HigherAbstraction(LowerAbstraction):
  def __init__(self):
    pass

class LowerAbstraction:
  def Spam(self):
    return 1

this = HigherAbstraction()
this.Spam()

Class inheritance. Also note that all methods in Python are virtual, so if you want to call a method from your base class in an overridden method, use something like BaseClassName.methodname(self, param1, param2).

[FONT] seems to be broken. :\
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)