Замена нулевых проверок с помощью полиморфизма

Очень простое решение:

  1. установить бесконечное значение в false. например
    $('.my-slider').slick({
     infinite: false });
    
  2. , добавьте следующий css .slick-disabled { display: none; pointer-events:none; }

, и это все.

1
задан James 15 January 2019 в 21:20
поделиться

2 ответа

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

В приведенном вами примере особый случай должен рассматриваться по-разному, потому что итерация должна быть остановлена ​​при обнаружении определенного значения (null в этом случае). Вы не можете применить решение для проблемы X для решения проблемы Y, особенно когда обе проблемы полностью противоположны.

0
ответ дан plalx 15 January 2019 в 21:20
поделиться

Предположительно, break должен предотвратить NullPointerException, потому что конец коллекции был достигнут. Если целью является фильтрация коллекции, более подходящая конструкция (такая как Predicate) будет оправданной (и более читаемой).

На высоком уровне вы заметили, что для переноса небольшой ОО-конструкции в пакет процедурного кода может потребоваться переосмысление предыдущей конструкции. Это часто правда. Если null используется в качестве точки останова в середине коллекции, возникает более сложная проблема проектирования перед реализацией шаблона нулевого объекта.

Хотя это все еще может быть хорошим сценарием для шаблона нулевого объекта (после рефакторинга цикла), шаблон не применим к каждому сценарию, в котором используется null. К сожалению, не все так просто. Optional является еще одним популярным решением, и есть еще.

0
ответ дан jaco0646 15 January 2019 в 21:20
поделиться
Другие вопросы по тегам:

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