На этой неделе провел серию код ревью и решил сформировать 3 простых, но мощных совета, чтобы ваш код был читаемым и поддерживаемым!
✅ 1. Разбивайте сложные лямбда-выражения
Лямбда-методы удобны, но слишком сложные выражения ухудшают читаемость.
🔴 Плохо:
var evenNumbers = numbers
.Where(n => n % 2 == 0)
.Select(n => n * n)
.OrderByDescending(n => n)
.ToArray();
🟢 Хорошо (разбиваем на методы):
private bool IsEven(int number) => number % 2 == 0;
private int Square(int number) => number * number;
var evenNumbers = numbers
.Where(IsEven)
.Select(Square)
.OrderByDescending(n => n)
.ToArray();
Теперь код понятнее и легче отлаживать.
---
✅ 2. Используйте ранний return вместо вложенных if-else
Чем меньше вложенность, тем чище код.
🔴 Плохо:
public void Attack(int damage)
{
if (damage > 0)
{
health -= damage;
if (health <= 0)
{
Die();
}
else
{
Debug.Log("Player took damage");
}
}
else
{
Debug.Log("Invalid damage value");
}
}
🟢 Хорошо:
public void Attack(int damage)
{
if (damage <= 0)
{
Debug.Log("Invalid damage value");
return;
}
health -= damage;
if (health <= 0)
{
Die();
return;
}
Debug.Log("Player took damage");
}
Ранний return делает код проще и понятнее.
---
✅ 3. Избегайте глубокой вложенности логики
Чем меньше if в if, тем лучше.
🔴 Плохо:
public void ProcessEnemies(List<Enemy> enemies)
{
foreach (var enemy in enemies)
{
if (enemy.IsAlive)
{
if (enemy.DistanceToPlayer < 10)
{
if (enemy.HasWeapon)
{
enemy.Attack();
}
}
}
}
}
🟢 Хорошо (разбиваем на методы):
public void ProcessEnemies(List<Enemy> enemies)
{
foreach (var enemy in enemies)
{
HandleEnemy(enemy);
}
}
private void HandleEnemy(Enemy enemy)
{
if (!enemy.IsAlive)
return;
if (enemy.DistanceToPlayer >= 10)
return;
if (!enemy.HasWeapon)
return;
enemy.Attack();
}
Теперь основная функция короткая, а обработка вынесена в отдельный метод.
---
💡 Вывод:
✅ Разбивайте сложные выражения на методы
✅ Используйте ранний return, чтобы избежать лишних if-else
✅ Минимизируйте вложенность для лучшей читаемости
Используете ли вы эти методы на практике или они для вас вновинку?
Поделитесь в комментариях👇