람다식을 쓰는 이유

냐옹·2024년 4월 9일
0

.NET

목록 보기
15/31

람다식을 쓰는 이유

불필요한 코드를 줄이고 가독성을 높이기 위함입니다.
A. 일반적으로 함수를 작성하고 그것을 사용하려고 할때 따로 호출해야합니다.
B. 람다를 쓰게되었을 때 불필요한 코드를 줄인다는 함수의 작성과 어떠한 동작을 한번에 할 수 있기 때문입니다. 이로 인해서 얻는 이점은 코드를 1-2줄 줄이는 것과, 코드를 보기위해서 이리저리 왔다갔다 할 필요가 없기 때문입니다.
C. 예시로 비동기 이벤트를 추가하는 것을 보면 아래와 같이하는데, 가독성의 향상은 조금 있지만, 그닥 사용함에 있어서 이점이 있는 것 같지는 않습니다.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Click += button1_Click;
}

private async void button1_Click(object sender, EventArgs e)
{
    await ExampleMethodAsync();
    textBox1.Text += "\r\nControl returned to Click event handler.\n";
}

private async Task ExampleMethodAsync()
{
    // The following line simulates a task-returning asynchronous process.
    await Task.Delay(1000);
}

}

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Click += async (sender, e) =>
{
await ExampleMethodAsync();
textBox1.Text += "\r\nControl returned to Click event handler.\n";
};
}

private async Task ExampleMethodAsync()
{
    // The following line simulates a task-returning asynchronous process.
    await Task.Delay(1000);
}

}

보통 람다식을 쓰고 싶다고 생각이 드는 건 어떤 순회가능형 개체를 가지고 특정한 동작을 하고 싶을 때입니다.
1. 하나씩 꺼내서 처리를 해서 다시 넣어놓는다던지
2. 하나씩 꺼내서 처리를 한다음 다른 곳에 넣고 싶다던지
3. 아니면 하나씩 꺼내서 동작만 한다던지
이것은 자바스크립트에서는 map 이나 foreach로 다룹니다.
C#에서 이에 대응하는 함수를 검색하면 LINQ나 람다표현식의 SELECT()를 말하는데 적절하지 않았습니다.
1. LINQ와 개체에 대한 람다표현식의 목적은 쿼리 작성입니다.
2. 목적이 쿼리작성이기 때문에 지연실행을 하면 이점이 있습니다. 때문에 SELECT만 작성하면 언제 실행될 지 모릅니다.
3. 만약에 꼼수로 값을 반환해서 (toArray()..등등) 할 수 있으나, 동작을 위해서 값을 반환한거라면, 반환한 개체의 리소스는 버리는 셈입니다.

때문에 개체를 순환해서 동작만 하는 것이라면, 개체에 대해서 foreach를 수행하는게 좋고,
쿼리를 작성할건데 중간에 동작도 포함하고 싶다면, 안에다가 대리자 함수를 작성하면 됩니다. 그럼 쿼리가 실행될 때마다 대리자호출 됩니다.

0개의 댓글