Оптимизация кода с константами
Есть код, в котором в классе CentrifugalLiquidInjector находятся функции для проведения расчетов. Можно ли как-то оптимизировать этот код и сделать его более понятным?
import math
from dataclasses import dataclass
from enum import Enum
class RelativeLength(Enum):
MAX_RELATIVE_LENGTH = 6
MIN_RELATIVE_LENGTH = 1.5
@dataclass(frozen=True, slots=True)
class CentrifugalLiquidInjector:
outer_diameter_injector: float
side_wall_thickness_injector: float
number_input_tangential_holes: float
diameter_input_tangential_holes: float
length_input_tangential_holes: float
@property
def diameter_twisting_chamber_injector(self) -> float:
return self.outer_diameter_injector - 2 * self.side_wall_thickness_injector
@property
def relative_length_tangential_hole(self) -> float:
value_relative_length = self.length_input_tangential_holes / self.diameter_input_tangential_holes
if RelativeLength.MIN_RELATIVE_LENGTH.value <= value_relative_length <= \
RelativeLength.MAX_RELATIVE_LENGTH.value:
return value_relative_length
else:
raise ValueError(f"Значение {value_relative_length} относительной длины тангенциального отверстия, "
f"не входит в диапозон [{RelativeLength.MIN_RELATIVE_LENGTH.value}..."
f"{RelativeLength.MAX_RELATIVE_LENGTH.value}]")
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
Как по мне, можно просто наделать локальных переменных с короткими и лаконичными названиями:
@property
def relative_length_tangential_hole(self) -> float:
diameter = self.diameter_input_tangential_holes
length = self.length_input_tangential_holes
value_relative_length = length / diameter
min_relative_length = RelativeLength.MIN_RELATIVE_LENGTH.value
max_relative_length = RelativeLength.MAX_RELATIVE_LENGTH.value
if min_relative_length <= value_relative_length <= max_relative_length:
return value_relative_length
else:
raise ValueError(f"Значение {value_relative_length} относительной длины тангенциального отверстия, "
f"не входит в диапазон [{min_relative_length}...{max_relative_length}]")
На мой вкус, стало читабельней.