Study
-
5. 응집도 : 흩어져 잇는 것들Study/내 코드가 그렇게 이상한가요? 2023. 12. 20. 21:48
응집도(cohension)란 '모듈 내부에 있는 데이터와 로직 사이의 관계가 얼마나 강한지 나타내는 지표'이다. 여기서 모듈은 클래스, 패키지, 레이어 등을 모두 포함할 수 있다. 응집도가 높은 구조는 변경하기 쉬우며 바람직한 구조인 반면, 응집도가 낮은 구조는 변경 시 문제가 발생하기 쉽다. 이러한 응집도를 낮추는 사례들을 알아보자. 5.1 static 메서드 오용 static 메서드를 오용하면 응집도가 낮아질 수 있다. 아래 예시를 살펴보자. // 주문을 관리하는 클래스 class OrderManager { static int add(int moneyAmount1, int moneyAmount2) { return moneyAmount1 + moneyAmount2; } } // static메서드를 사용..
-
4. 불변 활용하기 (안정적으로 동작하게 만들기)Study/내 코드가 그렇게 이상한가요? 2023. 12. 20. 11:07
가변과 불변을 적절하게 설계하지 못하면 동작을 예측하기 어렵고 혼란스러워진다. 이러한 상황을 피하기 위해 가능한 한 상태가 변경되지 않도록 불변을 활용하여 설계하는 방법을 알아본다.4.1 재할당재할당(파괴적 할당) : 변수에 값을 다시 할당하는 것 재할당은 변수의 의미를 바꿔 추측하기 어렵게 만들고, 언제 어떻게 변경되었는지 추적하기도 힘들게 만든다.int damage() { // 기본 공격력 int tmp = member.power() + member.weaponAttack(); // 속도로 공격력 보정 tmp = (int)(tmp (1f + member.speed() / 100f)); // 적 방어력 적용 tmp = tmp - (int)(enemy.defence / 2); // 음수 조정 tmp = ..
-
3. 클래스 설계 (객체 지향 설계의 기본)Study/내 코드가 그렇게 이상한가요? 2023. 12. 5. 06:41
객체 지향 설계의 기본이라고 할 수 있는 클래스 설계의 기본을 알아본다. 3.1 클래스 단위로 잘 동작하도록 설계하기 가장 중요한 것은 '클래스 단위로도 잘 동작하게 설계해야 한다'는 것이다. 클래스는 클래스 하나로도 잘 동작할 수 있어야 하며, 이는 복잡한 초기 설정 없이 바로 사용할 수 있으며, 클래스를 마음대로 조작해서 클래스 전체가 고장나는 일이 없도록 최소한의 조작 방법(메서드)만 외부에 제공해야 한다는 의미이다. 클래스는 기본적으로 '인스턴스 변수', '메서드' 두 가지로 구성된다. 여기서 잘 만들어진 클래스는 이를 다음과 같이 쓸 수 있다. 인스턴스 변수 인스턴스 변수에 잘못된 값이 할당되지 않게 막고, 정상적으로 조작하는 메서드 이러한 구성을 지켜야 하는 이유는, 이러한 구성을 지키지 않았..