Reputation: 1475
This is my code:
if self.a == "":
raise MyException("The required parameter 'a' is empty")
if self.b == "":
raise MyException("The required parameter 'b' is empty")
if self.v == "":
raise MyException("The required parameter 'v' is empty")
if self.g == "":
raise MyException("The required parameter 'g' is empty")
if self.quality == "":
raise MyException("The required parameter 'quality' is empty")
if self.abc == "":
raise MyException("The required parameter 'abc' is empty")
It's seems like too much repeated pattern. The issue is that I can't find a way to make it simpler and compact.
Any ideas?
Upvotes: 1
Views: 49
Reputation: 361977
I wouldn't advocate for getting really fancy trying to eliminate all redundancy. Your code is easy to understand. Doing something clever with getattr()
or whatnot to avoid repeating each variable name twice will turn a simple set of if
statement into something significantly more complicated.
That said, this is one of the rare times where compacting the code is worth it:
if self.a == "": raise MyException("The required parameter 'a' is empty")
if self.b == "": raise MyException("The required parameter 'b' is empty")
if self.v == "": raise MyException("The required parameter 'v' is empty")
if self.g == "": raise MyException("The required parameter 'g' is empty")
if self.quality == "": raise MyException("The required parameter 'quality' is empty")
if self.abc == "": raise MyException("The required parameter 'abc' is empty")
You could extract an exception raising method out of it; particularly valuable if you do this type of validation in many other places.
def requireNonEmpty(value, name):
if value == "":
raise MyException("The required parameter '{}' is empty".format(name))
requireNonEmpty(self.a, 'a')
requireNonEmpty(self.b, 'b')
requireNonEmpty(self.v, 'v')
requireNonEmpty(self.g, 'g')
requireNonEmpty(self.quality, 'quality')
requireNonEmpty(self.abc, 'abc')
Upvotes: 1