24b0d121e09c28a8699fe8b115ef046c62f42848


AndreyChechel/Explosuress: Closure-free C# Expressions


제프리맥길씨 사이버 스토킹하다가 만난 라이브러리인데, 로깅용으로 아주 쓸만해보인다.


24b0d121e09c28a8699fe8b115ef046ec849c3f5


기본적으로는 Expression의 람다식에 클로저로 캡쳐된 변수들을 미리 계산해 상수로 만들어 이쁘게 출력해볼수 있게 만들어주는 물건이고,


아래같이 활용하면 Validation 로직에서 변수간의 계산식과 당시 변수의 실제 값을 같이 보여줄수가 있게된다..!




24b0d121e09c28a8699fe8b115ef0468e1a9e3ba


여기에 [CallerArgumentExpression] 까지 끼얻어주면 이쁜 식과 이쁜 값을 동시에 보여줄수가 있게된다!!!


24b0d121e09c28a8699fe8b115ef0468eba2e3b3


하지만 이것도 마냥 무료는 아닌게, 간단한 연산이 Expression Compile이라는 아주 무거운 동작에 의존해 처리되게 되었고

배치된 변수들을 모두 미리 계산하여야 하기때문에 연산과정이 실제 로직과 무관하게 이뤄지게된다.


24b0d121e09c28a8699fe8b115ef04699438f1ba


false평가 이후의 코드는 연산자체가 이뤄지지 않아야 하나, 표현식에서 값을 보여줘야하기때문에 Explossuress 시점에서 연산이 발생한다.


369ef274c3836bf44cf284e546f06969ffae3092e072406fa07cc2f947abf927de7c0dfad4be61f7b75fb9e2ae6b90f4fe9a98de53


연산식이 외부 함수등에 의존하는것이 많을수록 로직을 통제하기 어려워질수 있다.