일부 코드를 리팩터링하는 동안 흥미로운 상황이 발생했습니다. 반환 값은 문자열이었고 호출 클래스 메서드 내에서 비교되었습니다.함수에서 반환 상태 및 문자열 가져 오기
문자열 비교가 비쌉니다. 반환 값이 bool 일 수 있다는 것을 알았지 만 예외가 발생하면 문자열에 로깅을 사용했습니다.
그래서 내 옵션 중 하나는bool result = a.f(&status_string, other_args);
과 같은 기능을 가지고 다음 status_string을 사용하는 것이 었습니다.
두 번째 옵션 :
std::pair<bool, string> result = a.f(other_args);
그러나 세 번째 옵션 : 가장 우아한 해결책이의
bool result = a.f(other_args) and then query for `a.get_status()` for the message.
어느 하나? 또는 boost::bind
을 통해 a.f
에 콜백을 전달하고 그 콜백에 문자열이 전달되었지만 코드가 더 이상 느슨하게 결합되지 않았습니다.
로깅은 로깅 이외의 용도로 사용됩니까? – us2012
그냥 로깅하고 더 이상 없습니다. – Fanatic23
그렇다면 어느 솔루션도 우아하지 않다고 생각합니다. 단순히 함수가 로깅을 수행하도록하고 어떤 방식 으로든 함수를 반환하지 않습니다. – us2012