Print Friendly and PDF

프로그래밍 책/읽기 좋은 코드가 좋은 코드다

[읽코좋코] 일관성과 간결성을 위한 줄바꿈과 정렬

나는야 개발자 2025. 6. 10. 20:39
반응형

1. 연결속도

2. 평균 대기시간

3. 대기시간의 흔들림

4. 패킷 손실

이렇게 네가지 파라미터를 가진 TcpConnectionSimulator클래스가 있다고 했을때

 

예시.

pubilc class PerformanceTester{
	pubilc static final TcpConnectionSimulator wifi = new TcpConnectionSimulator(
    500, /* 연결속도 */
    80, /* 평균 대기시간 */
    200, /* 흔들림 */
    1 /* 패킷 손실 */);
    
    pubilc static final TcpConnectionSimulator t3_fiber = 
    new TcpConnectionSimulator(
    45000, /* 연결속도 */
    10, /* 평균 대기시간 */
    0, /* 흔들림 */
    0 /* 패킷 손실 */);
    
    pubilc static final TcpConnectionSimulator cell = new TcpConnectionSimulator(
    100, /* 연결속도 */
    400, /* 평균 대기시간 */
    250, /* 흔들림 */
    5 /* 패킷 손실 */);
}

이 예제는 80줄 제한조건을 충족하기 위해 많은 줄 바꿈을 시젼하였다.

 

문제점

1. 줄 바꿈으로 인해 t3_fiber 코드가 주변 코드와 달라보이게 되어 불필요한 주목을 받게 되었음

2. "비슷한 코드는 비슷하게 보여야 한다."라는 원리에 위배되는 사례

 

1차 문제 해결.

pubilc class PerformanceTester {
    pubilc static final TcpConnectionSimulator wifi = 
    	new TcpConnectionSimulator(
            500, /* 연결속도 */
            80, /* 평균 대기시간 */
            200, /* 흔들림 */
            1 /* 패킷 손실 */);
    
    pubilc static final TcpConnectionSimulator t3_fiber = 
        new TcpConnectionSimulator(
            45000, /* 연결속도 */
            10, /* 평균 대기시간 */
            0, /* 흔들림 */
            0 /* 패킷 손실 */);
    
    pubilc static final TcpConnectionSimulator cell = 
        new TcpConnectionSimulator(
            100, /* 연결속도 */
            400, /* 평균 대기시간 */
            250, /* 흔들림 */
            5 /* 패킷 손실 */);
}

- 줄 바꿈을 도입하여 코드를 일관성 있게 만듦

- 일관성 있는 패턴을 가지므로 훑어보기 용이함

- 하지만 수직으로 너무 많은 빈칸을 사용하는 점이 마음에 걸림, 특히 동일한 주석을 세번 반복하고 있다는 점

 

최종 해결 버전 .

pubilc class PerformanceTester {
	// TcpConnectionSimulator (처리량, 	지연속도, 	흔들림, 	패킷_손실)

    pubilc static final TcpConnectionSimulator wifi = 
    	new TcpConnectionSimulator(500,		80,		200, 	1);
    
    pubilc static final TcpConnectionSimulator t3_fiber = 
        new TcpConnectionSimulator(45000,	10,		0,		0);
    
    pubilc static final TcpConnectionSimulator cell = 
		new TcpConnectionSimulator(100,		400,	250, 	5);
}

- 주석을 맨 위로 올리고 모든 파라미터를 한줄로 놓았다

- 주석이 바로 옆엔 없지만 '데이터'자체가 간결한 테이블 구조에서 설명되고 있다.

반응형