Aug-11-2019, 07:51 AM
Hello,
I am currently refactoring my API. I have been reading some because like Robert C. Martin clean code, and I am trying to right a cleaner code. So I came up with this:
. the __call__ in the base class is too long and have multiple if statements.
. methods should maximum 3 arguments, with that design I can add as many as I want.
what do you think?
Thanks
I am currently refactoring my API. I have been reading some because like Robert C. Martin clean code, and I am trying to right a cleaner code. So I came up with this:
from PySide2 import QtWidgets, QtCore class Widget(QtWidgets.QWidget): def __call__(self, **kwargs): for key in kwargs: if key == "t": self.title() if key == "n": self.widgetName() if key == "c": self.color() if key == "tt": self.toolTip() if key == "p": self.parent() def title(self): print "this will give the widget a title" def widgetName(self): print "this will give the widget a name" def color(self): print "this will give the widget color" def toolTip(self): print "this will pop up a tooltip" def parent(self): print "this will give a parent to the widget" class PushButton(Widget): def __call__(self, **kwargs): print "this creates a button" super(PushButton, self).__call__(**kwargs) class ComboBox(Widget): def __call__(self, **kwargs): print "this creates a comboBox" super(ComboBox, self).__call__(**kwargs) # Run pushBtn = PushButton() pushBtn(t="push me", n="pushBtnA") pushBtn(t="push me too", n="pushBtB", c=("rgb(100, 25, 75)"), p=None, tt="I am here to help") cmbBox = ComboBox() cmbBox(n="comboBoxA")So as you can see I have created an abstract class thas is inherited by diferent type of widgets. I would like to know what do you think about that design. What I like about is that in one line I can set an entire widget, and that it works with multiple types of widgets. But According to clean code I might be breaking 2 rules here:
. the __call__ in the base class is too long and have multiple if statements.
. methods should maximum 3 arguments, with that design I can add as many as I want.
what do you think?
Thanks