Имена параметров конструктора для ясности с передачей в анонимных методах - PullRequest
1 голос
/ 22 февраля 2011

Меня интересует удобочитаемость моего кода при передаче анонимных методов в параметры делегата:

                var touchListener = new TouchListener(
                down:(v, e) => 
                {
                    //Handle the down event
                },
                up:(v, e) =>
                {
                   //Handle the up event
                });

Как вы можете видеть, я назвал параметры «вниз» и «вверх», чтобы было более очевидно, что делают эти анонимные методы.

Вот класс TouchListener для ясности (он работает с MonoDroid, но это не важно здесь):

    public class TouchListener : View.IOnTouchListener
{
    public delegate void OnTouchAction(View v, MotionEvent e);

    private OnTouchAction down;
    private OnTouchAction up;

    public TouchListener(OnTouchAction down, OnTouchAction up)
    {
        this.down = down;
        this.up = up;
    }

    public bool OnTouch(View v, MotionEvent e)
    {
        switch (e.Action)
        {
            case MotionEventActions.Down:
                this.down(v,e);

                break;
            case MotionEventActions.Up:
                this.up(v,e);

                break;
            default:
                break;
        }

        return true;
    }
}

Возможно, мой подход неверен, и я злоупотребляю анонимными методами? Однако это экономит много кода.

1 Ответ

3 голосов
/ 22 февраля 2011

С точки зрения Javascript / jQuery это довольно понятный код;даже без названных параметров.Отбрасывание анонимных функций - это просто способ обработки событий.

Однако с точки зрения C # это довольно неясно.(Почти?). Ни одна из библиотек .NET не использует анонимные функции для обработки событий.Так что избавьте себя от хлопот и просто используйте для этого реальные события.

var touchListener = new TouchListener();
touchListener.OnTouchDown += (v,e) => Console.WriteLine("Hehe, I said touchdown");
touchListener.OnTouchUp += (v,e) => Console.WriteLine("Mweh");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...