가독성을 해치는 문제
표현식을 명확하게 유지합니다
가독성을 해치는 문제은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
강력함은 가독성을 해칠 수 있습니다
삼항 연산자는 간결하지만, 지나치게 사용하면 코드를 이해하기 어렵게 만들 수 있습니다.
목표는 문자를 가장 적게 쓰는 것이 아니라 명확성을 확보하는 것입니다. 독자가 한눈에 해석할 수 없는 줄은 곧 문제가 될 수 있습니다.
이 수업에서는 흔히 발생하는 문제와 이를 피하는 방법을 다룹니다.
주의할 점: 깊은 중첩
한 줄에 삼항 연산자를 여러 개 겹쳐 쓰면 읽기 어렵고 잘못 작성하기 쉽습니다.
중첩 단계가 하나 늘어날 때마다 논리를 따라가는 데 필요한 사고 부담이 커집니다.
// hard to follow on one line
String g = s>=90?"A":s>=80?"B":s>=70?"C":s>=60?"D":"F";해결 방법: if/else if 사용
분기가 많을 때는 긴 연쇄문보다 if/else if 계단식 구조가 더 명확합니다.
각 조건이 별도의 줄을 차지하므로 훑어보기 쉽고 오류를 찾고 수정하기도 쉽습니다.
String g;
if (s >= 90) g = "A";
else if (s >= 80) g = "B";
else if (s >= 70) g = "C";
else g = "F";주의할 점: 괄호 누락
괄호 없이 삼항 연산자와 +를 함께 사용하면 의미가 달라집니다.
+가 ?:보다 우선순위가 높기 때문에 문자열 연결이 조건이나 값의 일부를 흡수할 수 있습니다.
int n = 5;
// surprising: + groups before ?:
String out = "n is " + n > 3 ? "big" : "small"; // does NOT compile as intended해결 방법: 삼항 연산자를 괄호로 묶기
문자열 연결 안에서 사용하는 삼항 연산자는 항상 괄호로 묶으십시오.
그러면 각 부분의 경계가 명확해지고 예상한 결과를 얻을 수 있습니다.
public class Main {
public static void main(String[] args) {
int n = 5;
String out = "n is " + (n > 3 ? "big" : "small");
System.out.println(out);
}
}주의할 점: 내부의 부수 효과
양쪽 분기에 부수 효과가 있는 메서드 호출을 넣으면 어떤 코드가 실행되는지 파악하기 어려워집니다.
한눈에 어느 호출이 실행되는지 명확하지 않지만, 실제로는 한쪽 분기만 실행됩니다.
동작의 실행 여부가 중요하다면 if/else를 사용하십시오.
// unclear which side effect happens
boolean ok = check();
int r = ok ? save() : rollback();주의할 점: 긴 분기 값
참이나 거짓일 때의 값이 긴 식이면 삼항 연산자가 텍스트 벽처럼 변합니다.
먼저 복잡한 하위 식을 이름이 있는 변수로 추출한 다음 짧은 삼항 연산자를 사용하십시오.
// cramped
double total = vip ? base*0.8 + tax + ship - coupon : base + tax + ship;해결 방법: 중간 값에 이름 붙이기
중간 합계를 분리하면 어떤 값을 선택하는지 명확해지고 코드만 보아도 의미를 알 수 있습니다.
이제 삼항 연산자가 자연어처럼 읽힙니다.
public class Main {
public static void main(String[] args) {
boolean vip = true;
double regular = 100.0, discounted = 80.0;
double total = vip ? discounted : regular;
System.out.println(total);
}
}주의할 점: 불필요한 불리언 표현
flag ? true : false를 작성하는 것은 불필요합니다. 조건 자체가 이미 불리언 값이기 때문입니다.
조건을 그대로 사용하십시오. 마찬가지로 flag ? false : true는 단순히 !flag와 같습니다.
boolean active = user != null;
// not: user != null ? true : false
boolean inactive = user == null;여러 줄 삼항 연산자 서식 지정
삼항 연산자를 꼭 유지해야 한다면 서식을 지정하는 것이 도움이 됩니다. ?와 :를 줄의 시작 부분에 배치하고 서로 맞추십시오.
그러면 연쇄문이 읽기 쉬운 조건의 계단식 구조로 바뀝니다.
String tier = points >= 1000 ? "gold"
: points >= 500 ? "silver"
: "bronze";가독성 확인 목록
삼항 연산자를 코드에 반영하기 전에 다음을 확인하십시오. 단순한 선택 하나인가요? 형식이 호환되나요? 괄호가 명확한가요?
하나라도 그렇지 않다면 if/else를 사용하거나 변수를 추출하십시오. 영리해 보이는 코드보다 읽기 쉬운 코드가 낫습니다.
빠른 확인
더 깔끔하게 다시 작성한 코드를 찾아보십시오.
복습
삼항 연산자는 단순하게 유지할 때만 도움이 됩니다. 깊은 중첩, 괄호 누락, 부수 효과, 불필요한 불리언 표현을 피하십시오.
복잡한 값을 이름이 있는 변수로 추출하고 긴 연쇄문은 계단식 구조로 서식을 지정하십시오.
확신이 서지 않을 때는 가장 명확하게 읽히는 형식을 선택하십시오.
자주 묻는 질문
“가독성을 해치는 문제” 강의는 무료인가요?
네 — “가독성을 해치는 문제” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“가독성을 해치는 문제”에서 뭘 배우나요?
표현식을 명확하게 유지합니다 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Java Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“가독성을 해치는 문제” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 삼항 연산자
- 삼항 연산자 중첩하기
- 삼항 연산자와 if/else 비교
- 가독성을 해치는 문제