Могу ли я использовать полиморфизм в переключении типов для KeyCode - PullRequest
0 голосов
/ 07 марта 2019

Я читал о кампании Anti-If. Большинство из них сказали, что используют полиморфизм для замены условного.

Итак, должен ли я всегда использовать Полиморфизм при переключении типов, таких как KeyCode в KeyEventArgs, в событии KeyDown (в WinForms)?

Я всегда использую этот вид кода.

   If e.KeyCode = Keys.F1 Then
      'Do F1 things
   ElseIf e.KeyCode = Keys.F2 Then
      'Do F2 things
   End If

Это плохо? Если да (О, другой ЕСЛИ), Можете ли вы дать мне образец полиморфного подхода ..

1 Ответ

0 голосов
/ 08 марта 2019

В зависимости от языка, который вы используете, и вашего конкретного варианта использования, одним из подходов может быть создание карты, в которой ключами являются ваши ключевые коды, а значения являются указателями на функции с действиями, которые необходимо выполнить.

Еще лучше, вы могли бы сделать еще один уровень косвенности, где ваши значения - это некие объекты Action, каждый из которых знает, как их выполнить. Таким образом, вы можете повторно использовать код для запуска одного и того же вида функциональности в разных контекстах.

...