Я пытался оптимизировать компоновку кода (уменьшив количество if-elses), но все еще сохраняя читабельность. Я предполагаю, что правил будет намного больше, чем указаний, поэтому решил поместить правила в список функций. Таким образом, добавление нового правила включает просто добавление имени функции в rules
.
Очевидно, что можно выделить некоторые из функционально-постоянных частей multiplicand
, но я подумал, что это сильно пожертвовало читабельностью.
Я также подумал, что стоит проверить (и поднять) ошибки.
from statistics import median
def function_db( mount, rule, direction ):
item = range( 1, 10 )
rules = [ min, max, median ]
if ( direction == 'up' ):
multiplicand = ( 1+mount/100 )
elif ( direction == 'down' ):
multiplicand = ( 1-mount/100 )
else:
raise( ValueError( 'Unknown direction [' + str( direction ) + ']' ) )
if ( rule == 0 or rule > len( rules ) ):
raise( ValueError( 'Unknown rule-code [' + str( rule ) + ']' ) )
# Compute the result
multiplier = rules[ rule-1 ]( item )
final_item = multiplier * multiplicand
return final_item
print( "RESULT=%f" % ( function_db( 10, 3, "up" ) ) )