Что такое функция в программировании?

«Что такое функция в программировании?» — вопрос из категории C# Core, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Функция — это именованный, многократно используемый блок кода, который выполняет одну конкретную задачу. Функция может принимать входные данные (параметры), выполнять над ними операции и возвращать результат (возвращаемое значение).

Основные цели использования функций:

  • Устранение дублирования кода (DRY).
  • Структурирование и модульность программы.
  • Упрощение чтения, тестирования и поддержки кода.

Синтаксис функции в C#:

// 1. Объявление функции (метода)
// [модификаторы] возвращаемый_тип ИмяФункции([параметры])
public static int CalculateSum(int a, int b) // Сигнатура функции
{
    // Тело функции
    int sum = a + b;
    return sum; // Оператор return передаёт результат вызывающему коду
}

// 2. Вызов функции
int result = CalculateSum(5, 3); // result = 8
Console.WriteLine(CalculateSum(10, 20)); // Выведет 30

Разновидности функций в C#:

  1. Методы экземпляра: Привязаны к конкретному объекту класса.

    public class Calculator
    {
        public int Add(int a, int b) => a + b;
    }
    var calc = new Calculator();
    calc.Add(2, 2); // Вызов метода экземпляра
  2. Статические методы: Принадлежат типу (классу), а не объекту.

    public static class MathHelper
    {
        public static int Multiply(int x, int y) => x * y;
    }
    MathHelper.Multiply(3, 4); // Вызов статического метода
  3. Локальные функции (C# 7.0+): Функции, объявленные внутри другого метода.

    public void ProcessData()
    {
        int localVariable = 10;
        // Локальная функция имеет доступ к переменным внешнего метода
        int Square(int number) => number * number;
        Console.WriteLine(Square(localVariable)); // 100
    }
  4. Лямбда-выражения: Анонимные функции, записанные в краткой форме.

    Func<int, int, int> adder = (x, y) => x + y;
    int sum = adder(7, 8); // sum = 15

Ключевые принципы: Функция должна быть маленькой и делать одно дело (Single Responsibility Principle).