Который является более соответствующим: методы считывания и методы set или функции?

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']);
  });

Этот вопрос, вероятно, дублирует этот , но, поскольку этот вопрос не получил принятого ответа, я просто повторю ответ Марка.

7
задан Ant 6 October 2008 в 17:06
поделиться

10 ответов

Имейте чтение статьи "Tell, Do not Ask" на Прагматическом веб-сайте Программистов, и я думаю, что Вы будете видеть, что вторым примером является способ пойти.

В основном Вы не должны распространять логику через свой код, который подразумевается с Вашим первым примером, а именно:

  1. получите текущее значение видимости,
  2. примите решение на основе значения,
  3. объект обновления.
13
ответ дан 6 December 2019 в 06:15
поделиться

В примере Вы дали, show() и hide() имейте большой смысл, по крайней мере, мне.

С другой стороны, если у Вас было свойство skinPigment и Вы решили сделать функции названными tanMe() и makeAlbino() это было бы действительно плохим, неочевидным выбором.

Это субъективно, необходимо попытаться думать способ, которым думают пользователи (люди, использующие этот класс). Какой бы ни способ, которым Вы решаете, это должно быть очевидно для них и хорошо зарегистрированное.

5
ответ дан 6 December 2019 в 06:15
поделиться

Если переключение mIsVisible действительно включает и выключает видимость объекта сразу, чем использование показать/скрыть сценарий. Если это останется в старом состоянии немного дольше (например, пока что-то еще не инициирует перерисовку), затем, установить/получить сценарий был бы способом пойти.

2
ответ дан 6 December 2019 в 06:15
поделиться

Я пошел бы с isVisible ()/, шоу () / скрывают () набор.

setVisible () подразумевает, что все, он делает это, заменяет внутреннюю переменную. покажите () и скройтесь (), ясно дают понять побочные эффекты.

С другой стороны, если бы весь getVisible ()/setVisible () сделал то должен был заменить внутреннюю переменную, то Вы только что изменились удивительно мало от наличия их как общедоступные поля.

3
ответ дан 6 December 2019 в 06:15
поделиться

Неявно, 'шоу' и 'скрывает' функции, которые Вы перечисляете, оба методы set

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

0
ответ дан 6 December 2019 в 06:15
поделиться

Я предпочитаю шоу () и скрываю () методы, потому что они явно говорят то, что Вы идете. setVisible (булевская переменная) не говорит Вам, если метод собирается показывать/тянуть сразу же. Плюс шоу () и скрываются (), лучше названы методом для интерфейса (по моему скромному мнению).

1
ответ дан 6 December 2019 в 06:15
поделиться

В случае на самом деле необходимо написать код как

if (shouldBeShowingAccordingToBusinessLogic()) w.show();
else w.hide();

повсеместно, Вы могли бы быть более обеспечены с

w.showIfAndOnlyIf(shouldBeShowingAccordingToBusinessLogic())

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

w.setPostponedVisibility(shouldBeShowingAccordingToBusinessLogic());
...
w.realizeVisibility();

(Разве я не сказал, что это - bizzare?)

0
ответ дан 6 December 2019 в 06:15
поделиться

Дополнительная мотивация для движения для отобразить/скрыть решения то, что как метод set,

setVisible метод имеет 'побочный эффект', в котором он также отображается или скрывается SomeClass. Отобразить/скрыть методы лучше передают намерение того, что происходит.

0
ответ дан 6 December 2019 в 06:15
поделиться

методы set на самом деле очень мало имеют отношение к объектной ориентации, которая является идиомой программирования, примененной в примере. методы считывания незначительно лучше, но могут житься без во многих случаях. Если все может быть получено и установлено, какой смысл того, чтобы иметь объект? Операции нужно назвать на объектах выполнить вещи, изменение внутреннего состояния является просто побочным эффектом этого. Плохая вещь о методе set в присутствии полиморфизма - один из краеугольных камней OO - то, что Вы вынуждаете каждый производный класс иметь метод set. Что, если рассматриваемый объект не имеет никакой потребности во внутреннем состоянии, названном mIsVisible? Уверенный он может проигнорировать вызов и реализовать как пустой, но затем Вас оставляют с бессмысленной операцией. OTOH, операции как шоу и скрываются, может быть легко переопределен с различными реализациями, ничего не показывая о внутреннем состоянии.

3
ответ дан 6 December 2019 в 06:15
поделиться

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

2
ответ дан 6 December 2019 в 06:15
поделиться
Другие вопросы по тегам:

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