Сегодня у меня для вас только чужие туториалы
В последние годы устал твердить, что "в коде предметной логики не должно быть проверок на нулл" Представьте, вот вы - ваш персонаж. Вы бегаете, стреляете из лука, даже не знаете о существовании Unity (везет ведь кому-то...), и в какой-то момент проверяете что торговец в городе... не равен пустой ссылке на объект в оперативной памяти...
Для этого нам и нужны монады: штука из функционального программирования, обертка над каким-либо значением, которая уже содержит некоторый набор операций. Такой как проверка на нулл, например.
Помимо Nullable, в туторе еще рассказывают про Optional и Either. Первая похожа на nullable но дает возможность определить другой набор операций при отсутствии значения. Вторая дает возможность обрабатывать различные значения в зависимости от условий. Например, основное и дополнительное (или ближнее/дальнее) оружие у игрока.
Во многих случаях я бы предпочел наоборот инкапсулировать эту логику в объект предметной области, а не декорировать его. Хочется все таки максимально вглубь классов убрать эти некрасивые вызовы, чтобы вместо: Either weapon; weapon.Match( left => //do something with primary weapon, right => //do something with secondary weapon); Была красивая и короткая запись: WeaponPair weapons; weapons.DoSomething();
Фух, так давно веду канал, пора бы и за код начать душнить) Ставьте 🔥если понравился такой формат
#туториал@GamedevForge