
Комментарии 4
Про BDUF было очень внезапно!
Существует только "Сначала". Напиши очень мало кода, но до конца. Иначе ты будешь писать сразу техдолг.
KISS — Keep it simple AND stupid
Stupid не про того кто пишет, а про то каким должно оставаться написанное. По-русски это скорее "простым и надёжным как колесо"
В случае вайб-кодинга BDUF вредит. Там как раз повезёт если настолько всё предусмотреть, что LLM с первого раза нормально напишет, иначе вылет за контекстное окно и цирк с нейросетевым СДВГ и амнезией
Стать актуальна не только для начинающих Unity разработчиков, а в целом.
Смотрю примеры для KISS. В вашем "плохом" примере кода есть нормализация вектора:
using UnityEngine;
public class ComplexPlayerController : MonoBehaviour
{
public float speed = 5f;
void Update()
{
// Получаем ввод игрока
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
// Создаем сложную систему проверок
if (horizontal != 0 || vertical != 0)
{
// Создаем вектор движения
Vector3 movement = new Vector3(horizontal, 0, vertical);
// Нормализуем вектор для правильной скорости по диагонали
if (movement.magnitude > 1)
{
movement = movement.normalized;
}
// Применяем сложную формулу с проверками
if (movement.x > 0)
{
transform.position += new Vector3(movement.x * speed * Time.deltaTime, 0, 0);
}
else if (movement.x < 0)
{
transform.position += new Vector3(movement.x * speed * Time.deltaTime, 0, 0);
}
if (movement.z > 0)
{
transform.position += new Vector3(0, 0, movement.z * speed * Time.deltaTime);
}
else if (movement.z < 0)
{
transform.position += new Vector3(0, 0, movement.z * speed * Time.deltaTime);
}
}
}
}А в "хорошем" она уже куда-то пропала:
using UnityEngine;
public class SimplePlayerController : MonoBehaviour
{
public float speed = 5f; // Скорость движения игрока
void Update()
{
// Получаем ввод от игрока (стрелки или WASD)
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
// Создаем вектор движения
Vector3 movement = new Vector3(horizontal, 0, vertical);
// Двигаем игрока одной простой командой
transform.Translate(movement * speed * Time.deltaTime);
}
}В результате вы сократили количество кода, но ваш персонаж по диагонали будет двигаться быстрее, чем вверх-вниз или влево-вправо.
Пожалуйста, завязывайте с использованием ChatGPT! Я уже молчу о качестве примеров
Простыми словами для начинающих Unity-разработчиков учим принципы KISS, DRY, YAGNI и BDUF через аналогии из жизни