이번 주에는 다양한 개념을 배우고 적용해 보았다.
특히, 계산기 과제를 통해 코드 리팩토링, 추상화, 의존성 역전 원칙(DIP)을 경험할 수 있었다.
또한 Swift 마크업에 대해 알게 되었고, 기본 알고리즘 문제 풀이도 진행했다.
return 없이 print만 해도 될까?print하는 방식으로 구현했지만, 값을 반환하는 것이 더 유용하다는 걸 깨달음 guard vs if-else, 예외처리는 어떻게 할까?0으로 나눌 때 예외처리를 해야 했음 guard를 사용하면 초기 조건을 확인하고 빠르게 탈출할 수 있어 코드가 더 깔끔해짐 if-else보다 guard가 더 적절한 경우를 체감함 Calculator 클래스에서 AbstractOperation을 프로퍼티로 선언하려고 고민 Calculator 클래스가 직접 사칙연산을 수행했음class Calculator {
func add(_ a: Int, _ b: Int) -> Int { return a + b }
func subtract(_ a: Int, _ b: Int) -> Int { return a - b }
}
Calculator가 각 연산에 강하게 의존하고 있음Calculator 내부를 수정해야 함 → 확장성이 낮음AbstractOperation)을 활용해 추상화 적용protocol AbstractOperation {
func calculation(_ num1: Double, _ num2: Double) -> Double?
}
class AddOperation: AbstractOperation {
func calculation(_ num1: Double, _ num2: Double) -> Double? {
return num1 + num2
}
}
Calculator가 특정 연산 클래스에 의존하지 않음 → 의존성 역전 원칙(DIP) 적용Calculator 클래스가 프로토콜을 활용하도록 변경class Calculator {
func calculate(_ operation: AbstractOperation, _ num1: Double, _ num2: Double) -> Double {
return operation.calculation(num1, num2) ?? 0.0 // 기본값 0.0 반환
}
}
💡 이제 Calculator는 특정 연산에 의존하지 않음
새로운 연산을 추가해도 Calculator 코드를 수정할 필요가 없음 → OCP(개방-폐쇄 원칙)도 적용됨
///을 이용하여 Xcode Quick Help에 정보를 제공하는 법 학습/// 두 수를 더하는 함수
/// - Parameters:
/// - num1: 첫 번째 숫자
/// - num2: 두 번째 숫자
/// - Returns: 두 수의 합
func add(_ num1: Int, _ num2: Int) -> Int {
return num1 + num2
}
💡 Xcode Quick Help(⌥ Option + 클릭)에서 위와 같은 정보를 확인할 수 있음
이번 주에는 기초 알고리즘 문제들을 해결했다.
a + b 간단한 연산을 활용a / b 연산을 활용하여 몫만 반환for-in 문과 if 조건문을 이용하여 짝수만 더하기Arrary() 와 String() 활용하여 타입 변형contains 를 사용하여 중복 문자 제거
---