Использование Системы. Windows. Формы. Таймер. Запустите () / Остановку () по сравнению с Включенным = истинный/ложный

Просто, чтобы подробнее остановиться на ответах, данных onebyone и Timbo . Когда люди обсуждают использование исключений, обычно кто-то в конечном итоге говорит: «Исключения следует использовать в исключительных ситуациях».

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

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

Лично я склонялся бы к проверке аргументов перед построением объекта времени (что-то вроде ответа Тимбо ), и тогда я бы имел утверждение в конструкторе, чтобы проверить, что их аргументы действительны.

В том случае, если вашему конструктору нужен ресурс (например, выделяет память), то это, ИМХО, будет ближе к исключительной ситуации, и тогда вы выдадите исключение.

31
задан Stewart 18 June 2009 в 14:26
поделиться

4 ответа

Как заявили BFree и Джеймс , нет никакой разницы в Start \ Stop по сравнению с Включено в отношении функциональности. Однако решение о том, что использовать, должно основываться на контексте и ваших собственных рекомендациях по стилю кодирования. Это зависит от того, как вы хотите, чтобы читатель вашего кода интерпретировал то, что вы написали.

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

Я не делаю этого. '

31
ответ дан 27 November 2019 в 22:10
поделиться

Из документации Microsoft:

Вызов метода Start аналогичен как для параметра Enabled значение true. Точно так же вызов метода Stop аналогичен для параметра Enabled установлено значение false.

http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.enabled.aspx

Так что, думаю, разницы нет ...

15
ответ дан 27 November 2019 в 22:10
поделиться

Нет, они эквивалентны друг другу.

См. Timer.Enabled и Timer.Start / Timer.Stop

To Добавьте к своему Вопросу о консенсусе, я бы сказал, что, вероятно, лучше всего использовать методы Start / Stop, а также, я полагаю, лучше для удобочитаемости.

Джеймс.

6
ответ дан 27 November 2019 в 22:10
поделиться

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

Тем не менее, я не думаю, что есть много двусмысленности относительно того, что будет делать настройка Enabled = true :)

5
ответ дан 27 November 2019 в 22:10
поделиться
Другие вопросы по тегам:

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