최근 버그 수정으로 인해 다른 팀 구성원이 작성한 코드를 살펴 보았습니다.이 코드는 C #입니다.
return (decimal)CostIn > 0 && CostOut > 0 ? (((decimal)CostOut - (decimal)CostIn) / (decimal)CostOut) * 100 : 0;
이제는 모든 캐스트에 대한 합당한 이유가 있으므로 여전히 따르기가 매우 어렵습니다. 계산에 사소한 버그가 있었고 문제를 해결하기 위해 그것을 풀어야했습니다.
코드 검토에서이 사람의 코딩 스타일을 알고 있으며 그의 접근 방식은 짧을수록 거의 항상 더 좋습니다. 그리고 물론 거기에는 가치가 있습니다. 우리는 모두 잘 배치 된 몇몇 연산자로 정리할 수있는 불필요하게 복잡한 조건부 논리 체인을 보았습니다. 그러나 그는 하나의 진술로 가득 찬 연산자 체인을 따르는 데있어 나보다 분명히 더 능숙합니다.
물론 이것은 궁극적으로 스타일의 문제입니다. 그러나 코드 간결성을위한 노력이 유용하지 않고 이해의 장벽이되는 시점을 인식하기 위해 어떤 글을 작성하거나 연구 한 적이 있습니까?
캐스트 이유는 Entity Framework입니다. db는 이들을 널 입력 가능 유형으로 저장해야합니다. 소수? C #의 Decimal과 같지 않으며 캐스팅해야합니다.
CostOut
동일하다 Double.Epsilon
, 따라서 0보다 크다. 그러나이 (decimal)CostOut
경우 0이며, 우리는 0으로 나누기 오류가 있습니다. 첫 번째 단계는 코드를 올바르게 얻는 것입니다. 올바르게 작성하고 테스트 사례를 작성한 다음 우아 하게 만드십시오 . 우아한 코드와 간단한 코드는 공통점이 많지만 간결함은 우아함의 영혼이 아닙니다.