gulp.start
устарела в v4. В зависимости от ваших потребностей, вместо этого вы можете использовать gulp.series
или gulp.parallel
.
- gulp.task('start', function() {
- devMode = true;
- gulp.start(['build', 'browser-sync']);
+ gulp.task('start', gulp.series('build', 'browser-sync'), function(done) {
+ devMode = true;
gulp.watch(['./src/css/**/*.css'], ['css']);
gulp.watch(['./src/js/**/*.js'], ['js']);
gulp.watch(['./src/templates/**/*.html'], ['html']);
});
Этот вопрос, вероятно, дублирует этот , но, поскольку этот вопрос не получил принятого ответа, я просто повторю ответ Марка.
Имейте чтение статьи "Tell, Do not Ask" на Прагматическом веб-сайте Программистов, и я думаю, что Вы будете видеть, что вторым примером является способ пойти.
В основном Вы не должны распространять логику через свой код, который подразумевается с Вашим первым примером, а именно:
В примере Вы дали, show()
и hide()
имейте большой смысл, по крайней мере, мне.
С другой стороны, если у Вас было свойство skinPigment
и Вы решили сделать функции названными tanMe()
и makeAlbino()
это было бы действительно плохим, неочевидным выбором.
Это субъективно, необходимо попытаться думать способ, которым думают пользователи (люди, использующие этот класс). Какой бы ни способ, которым Вы решаете, это должно быть очевидно для них и хорошо зарегистрированное.
Если переключение mIsVisible действительно включает и выключает видимость объекта сразу, чем использование показать/скрыть сценарий. Если это останется в старом состоянии немного дольше (например, пока что-то еще не инициирует перерисовку), затем, установить/получить сценарий был бы способом пойти.
Я пошел бы с isVisible ()/, шоу () / скрывают () набор.
setVisible () подразумевает, что все, он делает это, заменяет внутреннюю переменную. покажите () и скройтесь (), ясно дают понять побочные эффекты.
С другой стороны, если бы весь getVisible ()/setVisible () сделал то должен был заменить внутреннюю переменную, то Вы только что изменились удивительно мало от наличия их как общедоступные поля.
Неявно, 'шоу' и 'скрывает' функции, которые Вы перечисляете, оба методы set
Для булевских переменных я думал бы, что единственный инструмент как Вы показали, было бы хорошо. Однако .show и функция .hide также похожи на команды, не функции, которые изменяют состояние объекта.
Я предпочитаю шоу () и скрываю () методы, потому что они явно говорят то, что Вы идете. setVisible (булевская переменная) не говорит Вам, если метод собирается показывать/тянуть сразу же. Плюс шоу () и скрываются (), лучше названы методом для интерфейса (по моему скромному мнению).
В случае на самом деле необходимо написать код как
if (shouldBeShowingAccordingToBusinessLogic()) w.show();
else w.hide();
повсеместно, Вы могли бы быть более обеспечены с
w.showIfAndOnlyIf(shouldBeShowingAccordingToBusinessLogic())
Или, для действительно причудливых случаев, когда Ваша логика не может решить, можно ли к дау или только в конце некоторого фрагмента кода, попробовать
w.setPostponedVisibility(shouldBeShowingAccordingToBusinessLogic());
...
w.realizeVisibility();
(Разве я не сказал, что это - bizzare?)
Дополнительная мотивация для движения для отобразить/скрыть решения то, что как метод set,
setVisible
метод имеет 'побочный эффект', в котором он также отображается или скрывается SomeClass
. Отобразить/скрыть методы лучше передают намерение того, что происходит.
методы set на самом деле очень мало имеют отношение к объектной ориентации, которая является идиомой программирования, примененной в примере. методы считывания незначительно лучше, но могут житься без во многих случаях. Если все может быть получено и установлено, какой смысл того, чтобы иметь объект? Операции нужно назвать на объектах выполнить вещи, изменение внутреннего состояния является просто побочным эффектом этого. Плохая вещь о методе set в присутствии полиморфизма - один из краеугольных камней OO - то, что Вы вынуждаете каждый производный класс иметь метод set. Что, если рассматриваемый объект не имеет никакой потребности во внутреннем состоянии, названном mIsVisible? Уверенный он может проигнорировать вызов и реализовать как пустой, но затем Вас оставляют с бессмысленной операцией. OTOH, операции как шоу и скрываются, может быть легко переопределен с различными реализациями, ничего не показывая о внутреннем состоянии.
В целом я думаю, что методы set/методы считывания должны только установить значения свойств. В Вашем примере Вы также выполняете действие на основе значения isVisible свойства. В этом случае я утверждал бы, что использование функций, чтобы выполнить действие и обновить состояние лучше, чем наличие метода set/метода считывания, который выполняет действие как побочный эффект обновления свойства.