named/optional 인자(argument)는 C# 4.0에 추가된 기능입니다. 특히, named 인자는 메소드 호출 시에 인자의 이름을 지정할 수 있는 기능으로 코드 가독성 향상에 많은 도움이 됩니다.
named 인자 사용 전후를 비교해 보면 어떤 면에서 도움이 되는지 명확합니다. 다음은 StreamReader를 생성하는 예입니다.
var reader = new StreamReader(inputStream, Encoding.UTF8,
false, 8192, false);
이 생성자는 인자를 5개나 받습니다. inputStream
과 Encoding.UTF8
인자의 의미는 비교적 명확하지만, 뒤에 나오는 세 인자 false
, 8192
, false
는 무엇을 뜻하는지 IntelliSense의 도움을 받거나 문서를 찾아보지 않는 이상 알기가 어렵습니다. 문서를 찾아보면 각각 detectEncodingFromByteOrderMarks
, bufferSize
,leaveOpen
인자임을 확인할 수 있습니다.
named 인자를 사용하면 코드에 이런 정보를 직접 줄 수 있습니다.
var reader = new StreamReader(inputStream, Encoding.UTF8,
detectEncodingFromByteOrderMarks: false,
bufferSize: 8192,
leaveOpen: false);
바뀐 코드를 보면 따로 문서를 찾아보지 않아도 각각의 인자가 어떤 의미인지 한 눈에 파악할 수 있습니다. 특히, 위 StreamReader
생성자처럼 bool
타입으로 여러 옵션을 받는 메소드의 경우, named 인자를 쓰는 것이 가독성 향상에 훨씬 도움이 됩니다.
Pingback: named 인자 사용하기 | 서광열의 C# 스쿨