clean code
-
10. 이름 설계 : 구조를 파악할 수 있는 이름Study/내 코드가 그렇게 이상한가요? 2024. 2. 11. 16:55
이름을 짓는 기본적인 방법은 목적 중심 이름 설계이다. 이는 소프트웨어가 달성해야 하는 목적을 기반으로 이름을 설계하는 방법으로, 이름에서 목적과 의도를 읽고 이해할 수 있게 설계해아 한다는 것이다. 1. 부적절한 이름 온라인 쇼핑몰을 예로 들어보자. 흔히 볼 수 있는 좋지 않은 이름 설계는 상품을 그대로 '상품 클래스'라고 이름을 붙이는 것이다. 대부분의 로직이 상품을 중심으로 이루어지는 온라인 쇼핑몰 특성상 '상품 클래스'라고 단순하게 이름을 붙이는 순간, 해당 클래스는 수많은 클래스와 관련 있는 로직을 갖게 되고 점점 거대하고 복잡해진다. 1.1 관심사 분리 상품은 예약, 주문, 발송 등 다양한 관심사와 연관이 있다. 즉, 상품 클래스는 다양한 관심사와 결합되어, 온갖 것과 관련된 로직을 품게 되는..
-
9. 설계의 건전성을 해치는 여러 악마Study/내 코드가 그렇게 이상한가요? 2024. 2. 11. 05:15
이번 장에서는 지금까지 소개한 것 이외의 나쁜 코드 및 대처 방안을 공부한다. 1. 데드 코드 절대 실행되지 않는 조건 내부에 있는 코드를 데드 코드(dead code) 또는 도달 불가능한 코드(unreachable code)라고 부른다. 이러한 코드는 여러 문제를 일으킨다. 코드의 가독성을 떨어뜨린다. 코드를 읽는 사람이 데드 코드 주변을 읽을 때마다, 해당 코드가 어떤 조건에서 실행되는지 생각하게 만든다.(실제로는 실행되는 경우가 없는데도 말이다. 이는 숨겨둔 의도가 있는 것은 아닌지 생각하느라 에너지를 소비하게 한다.) 언젠가 버그가 될 가능성이 있다. 지금까지는 실행되지 않았지만, 사양 변경에 의해 도달 가능한 코드로 바뀔 수 있다. 이렇게 되살아난 코드가 변경된 사양과 다르다면 버그가 된다. 데..
-
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 = ..