IF

Java에서 안전한 타입 변환을 위해 선택했던 방법 서버와의 HTTP 통신을 통해 응답을 받아오기 위해 다음과 같은 Response 인터페이스를 상속하는 간단한 클래스 Success와 Fail을 만들었다고 해보자. sealed interface Response data class Success(val responseBody: String) : Response data class Fail(val errorMessage: String) : Response 기존 자바에서는 안전하게 타입을 변환하기 위해 타입을 변환하기 전에 instanceof 함수를 통해 타입을 체크한 후 다시 타입 변환을 해서 메서드를 호출해야 했다. public class ResponseMain { public static void mai..
Step과 Job의 차이점 Step은 무조건 순차적으로 실행되는 반면, Job은 병렬적으로 실행될 수도 있고 순서대로 실행될 수도 있다. 이 말은 Step에서 실패를 제어하기 위해 사용했던 전제인 "먼저 실행된 Step은 이후 Step 시작 전에 끝난다"가 더이상 유효하지 않다는 뜻이다. 따라서 이 전제를 맞추기 위해 추가적인 설정을 해주어야 한다. 병렬적인 Job 간의 실패 제어 일단, 병렬적인 Job A와 Job B가 있다고 해보자. B가 A의 실패를 제어하는 것은 불가능하다. 이유는 B는 A에 대한 정보가 없기 때문이다. 하나의 Job이 다른 Job에 대한 정보를 알기 위해서는 needs Context를 사용해야 하는데, 병렬적인 Job 간에는 needs에 다른 Job의 정보가 없다. 공식 문서에는..
블록이 실행되지 말아야 할 때의 Best Practice Kotlin에서는 if-else 문으로 코드 블록을 실행할지 결정한다. 하지만 if-else 문을 중첩해서 쓰면 블록이 계속 블록이 중첩되기 때문에 가독성이 떨어진다. 특히 오랫동안 유지보수된 레거시 코드들을 보면 이러한 상황이 매우 잘 나타난다. 보통 이러한 코드들은 null이 아님을 확인하기 위해 1번 if 문을 쓰는 것을 기본으로 한다. 예를 들어 다음 코드와 같이 사용된다. fun blockExecuteExample(apple : Apple?) { if (apple != null) { if(apple is Fruit) { eat() } } } 여기서 끝나면 괜찮겠지만 보통 이런 코드들은 if문을 여러 번 중첩한다. if 문을 여러 번 중첩하..
Dev.Cho
'IF' 태그의 글 목록