Сколько сокрытия информации необходимо при выполнении рефакторинга кода?

Вот оптимизированная версия кода jQuery, предоставленного Ричардом Дж.П. Ле Гуэном:

$(document).ready(function() {

    $('a').each(function() {

        var clicked = false;

        $(this).bind('click', function() {

            if(!clicked) return !(clicked = true);
        });
    });
});
1
задан Hao 23 November 2009 в 06:50
поделиться

4 ответа

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

Программист, придя за вами и просмотрев ваш код, просто посмотрит на определение метода расширения, чтобы узнать, что он делает, и теперь он знает что этот код определен в одном месте, поэтому он не может отличаться от места к месту.

2
ответ дан 3 September 2019 в 01:21
поделиться

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

По сути, сокращение небольшого фрагмента стандартного кода не обязательно делает вещи более лаконичными; это всего лишь еще один кусочек абстрактности, который разработчик должен преодолеть и понять.

Как разработчик, я понятия не имею, что означает «ExecuteWithVerify». Что именно мы проверяем? Придется поискать и запомнить. Но с помощью стандартного кода я могу посмотреть на код и точно понять, что происходит.

1
ответ дан 3 September 2019 в 01:21
поделиться

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

0
ответ дан 3 September 2019 в 01:21
поделиться

Оператор «новый» внутри класса (кроме конструктора) следует избегать любой ценой. Это то, что вам нужно здесь для рефакторинга.

-1
ответ дан 3 September 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: