Зачем проверять объект на null, прежде чем проверять некоторые его внутренние компоненты?

Зачем проверять объект на null, прежде чем проверять некоторые его внутренние компоненты?
Зачем проверять объект на null, прежде чем проверять некоторые его внутренние компоненты? - anitalanza @ Unsplash

Я собираюсь согласиться со всеми остальными, но с немного другим акцентом: модульные тесты — это способ подтвердить ваше понимание того, как должен вести себя тестируемый код и как некоторые данные должны выглядеть впоследствии, и передать то же самое. понимания тому, кто просто читает тест.

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

Вы имеете дело с C#, если у вас не включена возможность обнуления И вы понимаете, что конкретное значение не должно быть нулевым, тогда вам АБСОЛЮТНО следует провести тест, который проверяет, что это значение не равно нулю. Независимо от того, что это случайно проверяется каким-то другим тестом. Теперь вопрос о том, следует ли включать этот тест в более крупный тест или отдельно в его собственный изолированный тест, является более сложным. Чем сложнее тест, тем сложнее его понять, но проверка на null не делает его намного сложнее.

И тогда, конечно, возникает вопрос, что делать, когда включено значение nullable. Как вы понимаете, значение не должно быть нулевым, и компилятор лишь частично обеспечивает это. Что делать?

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

Прикрепляю к посту несколько видео по теме:

Прикрепленное видео 1 - СРОЧНО! МАРС ОТВЕТИЛ НАМ НА ЗАПРОС! 28.02.2022! ДОКУМЕНТАЛЬНЫЙ ФИЛЬМ!

Прикрепленное видео 2 - Михаил Дударев — Опасные типы, или Java Security Model на практике

Прикрепленное видео 3 - WPF+MVVM часть 1 (Перезалив) Начало, архитектура проекта, основные элементы MVVM


LetsCodeIt, 27 февраля 2023 г., 12:23