Я щойно написав цей рубіновий код, це дужепросто, я просто хочу поміняти порядок роботи залежно від змінної. У мене таке відчуття, що те, що я написав, є більш багатослівним, ніж потрібно, чи може хтось придумати більш стислий спосіб його написання?
if opts["--appears"]
if regex = opts["--matches"]
test = !response.text.match(regex)
else
test = !response.empty?
end
else
if regex = opts["--matches"]
test = response.text.match(regex)
else
test = response.empty?
end
end
Тож, на мою думку, можна оптимізувати зовнішній, якщо блоковий, все, що змінюється - це перетворюється test
в !test
. Вибачте за те, що здається простим питанням, але я просто не можу придумати, що робити для його оптимізації.
Повідомте мене, якщо ви вважаєте це поганим форумом для цього питання чи ви вважаєте, що його слід перенести на перегляд коду. Я думав, що це може бути найкращим місцем для цього, але хіба не впевнений.
Дякую
Відповіді:
2 для відповіді № 1Просте вдосконалення - спершу запустити тест, а потім повернути мінус, якщо опція ["- з'являється"]:
test = if regex = opts["--matches"]
response.text.match(regex)
else
response.empty?
end
opts["--appears"] ? !test : test
0 для відповіді № 2
Я вважаю, що це одночасно спростить код і покращить читабельність:
regex = opts["--matches"]
test =
if opts["--appears"]
regex ? !response.text.match(regex) : !response.empty?
else
regex ? response.text.match(regex) : response.empty?
end
або, якщо ви віддаєте перевагу:
regex = opts["--matches"]
test =
case opts["--appears"]
when true
regex ? !response.text.match(regex) : !response.empty?
when false
regex ? response.text.match(regex) : response.empty?
end