Обновить

Простыми словами для начинающих Unity-разработчиков учим принципы KISS, DRY, YAGNI и BDUF через аналогии из жизни

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели7.1K
Всего голосов 6: ↑6 и ↓0+7
Комментарии4

Комментарии 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! Я уже молчу о качестве примеров

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации