如果 elif else 构造并完全符合 DRY

If elif else construct and full DRY conform

首先,对于不好的标题,我深表歉意,但我不知道什么才是合适的。我正在为以下块寻找更好的语法,这样我就不会重复自己了。

非常感谢!

这里假设一些事情可以让它优雅地工作,所以你可能想在代码的其他地方确保这一点。我的假设:

  • self.rulerMajorTickWidthself.rulerMinorTickWidth 要么是正数,要么等于零
  • 它们都被定义为属性,查找它们不会抛出错误
  • 您只想将两者中较大的一个除以 2

假设所有这些,你可以简单地做:

halfTickHeight = max(self.rulerMajorTickWidth, self.rulerMinorTickWidth) / 2

如果它们的 "false" 值是 None 或未定义,则情况会更复杂。这就是为什么我建议在代码的其他地方确保它是 0 或 integer/float。如果它们实际上是布尔值 False 你可以 float() 它们等于 0

编辑:因为我刚刚注意到标签与宽度部分不同,您仍然可以通过这样做更轻松地执行所有检查:

tmpMajor = self.rulerMajorTickWidth if self.rulerMajorTickLabel else 0
tmpMinor = self.rulerMinorTickWidth if self.rulerMinorTickLabel else 0
halfTickHeight = max(tmpMajor, tmpMinor) / 2

这等同于之前的所有 if...elif...else 子句