Тесты И операторы контроля

Вы можете использовать базу данных реального времени firebase для этого. Вы можете создать структуру данных для хранения чатов и добавить наблюдателей для потоков беседы для обоих пользователей. Он по-прежнему не обладает архитектурой device-server-device, но в этом случае на стороне разработчиков нет дополнительного сервера. Это использует серверы firebase. Вы можете проверить учебник здесь (игнорируйте часть пользовательского интерфейса, хотя это также хорошая отправная точка для пользовательских интерфейсов чата).

Firebase Realtime Chat

12
задан Community 23 May 2017 в 12:33
поделиться

9 ответов

Проблема с доверием просто Утверждает, то, что они могут быть выключены в продуктивной среде. Заключить статью Википедии в кавычки:

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

Таким образом, если правильность Вашего кода полагается на Утверждение, чтобы быть там, можно столкнуться с серьезными проблемами. Несомненно, если бы код работал во время тестирования, то это должно работать во время производства... Теперь введите второго парня, который работает над кодом и просто собирается решить небольшую проблему...

10
ответ дан 2 December 2019 в 18:23
поделиться

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

Используйте, если операторы для проверки вводят, Вы не управляете: открытые интерфейсы, разработанные для потребления пользователем, ввод данных пользователем, тестирующий и т.д.

Протестируйте Вас приложение со встроенными утверждениями. Затем развернитесь без утверждений.

4
ответ дан 2 December 2019 в 18:23
поделиться

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

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

Я обычно выдаю исключение в операторе "if" для взятия на себя роли по утверждению в случае, если они отключены

assert(value>0);
if(value<=0) throw new ArgumentOutOfRangeException("value");
//do stuff
3
ответ дан 2 December 2019 в 18:23
поделиться

Я не согласился бы с этим оператором:

Только вызывающая сторона знает то, что "допустимое входное значение" для Вашей функции, и он должен проверить ее законность, прежде чем он вызовет Вашу функцию.

Вызывающая сторона могла бы думать, что он знает, что входное значение корректно. Только автор метода знает, как это предполагает для работы. Лучшая цель программиста состоит в том, чтобы сделать клиент для попадения "в яму успеха". Необходимо решить, какое поведение является более соответствующим в данном случае. В некоторых случаях неправильные входные значения могут быть простительными, в другом необходимо бросить exception\return ошибку.

Что касается Утверждает, я повторил бы других комментаторов, утверждал бы, проверка времени отладки на автора кода, не кодируют клиенты.

2
ответ дан 2 December 2019 в 18:23
поделиться

Не забывайте, что большинство языков позволяет Вам выключать утверждения... Лично, если я был готов записать, не обеспокоюсь ли тесты для защиты от всех диапазонов недопустимого входа я утверждением во-первых.

Если, с другой стороны, Вы не пишете логику для обработки всех случаев (возможно, потому что не разумно попытаться продолжить недопустимый вход), затем, я использовал бы оператор контроля и шел бы для "сбоя рано" подход.

1
ответ дан 2 December 2019 в 18:23
поделиться

Если я помню правильно от класса CS

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

Таким образом, я соглашаюсь. Обычно Вам не нужны оба.

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

1
ответ дан 2 December 2019 в 18:23
поделиться

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

Проверьте исходные данные, которые происходят внешне с если-условиями. Внешне, это где угодно вне кода, что Вы/Ваши объединяете в команду управление и тест.

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

0
ответ дан 2 December 2019 в 18:23
поделиться

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

Если оператор "if" на самом деле исправляет недопустимые входные данные в производственном коде, это означает, что утверждение никогда не уходило во время тестирования на коде отладки, это означает написание кода, который Вы никогда не выполняли.

Для меня это ИЛИ ситуация:

(заключите Andrew в кавычки), "защитите от всех диапазонов недопустимого входа, я не обеспокоился бы утверждением во-первых".-> пишут если-тест.

(заключите aku в кавычки), "неправильные входные значения могут быть простительными"->, пишут утверждение.

Я не могу выносить обоих...

0
ответ дан 2 December 2019 в 18:23
поделиться

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

-1
ответ дан 2 December 2019 в 18:23
поделиться
Другие вопросы по тегам:

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