코드 성장 이야기/읽기 좋은 코드가 좋은코드다

읽기 좋은 코드가 좋은 코드다 - 1

레알윙 2021. 11. 20. 18:10
반응형

해당 내용은 개발자라면 누구나 들어본 책인 CleanCode보다 간결하게 읽을 수 있는 책이다.

해당 책과 CleanCode(과거에 읽어 희미해진 기억)비교를 하면서 코드 스타일 정리를 시작해보겠다.

 

 

 

이해하기 쉬운코드

코드는 이해하기 쉬워야 한다.

아래의 코드는 임시로 만든것이지만 사람의 이름과 결과를 출력하는 코드이다. 아래와같이 작성을 하게 되면 쉽게 볼수 있으나

@Test
public void sampleMethod() {
    List<TestVO> list = Arrays.asList(new TestVO(31, "개발장"));

    for (TestVO vo : list) {
        if (vo.isManyAge()) {
            vo.setEtc("계란한판 넘음 ㅋ")
        } else {
            vo.setEtc("계란한판보다 작음 ^^");
        }

        System.out.println(vo.getName() + "님은 " + vo.getEtc());
    }
}

class TestVO() {
    private int age;
    private String name;
    private String etc;

    public TestVO(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public int getAge() {
        return this.age;
    }

    public String getName() {
        return this.name;
    }

    public String getEtc() {
        return this.etc;
    }

    public void setEtc(String etc) {
        this.etc = etc;
    }

    public boolean isManyAge() {
        if (this.age > 30) {
            return true;
        }

        return false;
    }
}

이와같은 경우는 매우 보기가 힘들다.(이렇게 짜는사람은 없겠지만.. )

@Test
public void sampleMethod() {
    List<TestVO> list = Arrays.asList(new TestVO(31, "개발장"));

    for (TestVO vo : list) {
        if (Integer.parseInt(vo.getData("AGE").toString()) > 30) {
            vo.setEtc("계란한판 넘음 ㅋ");
        } else {
            vo.setEtc("계란한판보다 작음 ^^");
        }

        System.out.println(vo.getData("NAME") + "님은 " + vo.getData("ETC"));
    }
}

class TestVO {
    private int age;
    private String name;
    private String etc;

    public TestVO(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public Object getData(String type) {
        if ("AGE".equals(type)) {
            return age;
        }
        if ("NAME".equals(type)) {
            return name;
        }
        if ("ETC".equals(type)) {
            return etc;
        }

        return null;
    }

    public void setEtc(String etc) {
        this.etc = etc;
    }
}

 

 분량이 적은 코드보다 이해하기 쉬운 코드여야 한다.

@Test
public void sampleMethod() {
    int age = 30;

	//만나이포함
    boolean isManyAge = age > 30 ? (31 <= age && 30 > age) ? true : false : false;
}

위의 코드보다 아래의 코드가 읽기 더 쉽다. 

    @Test
    public void sampleMethod() {
        int age = 30;

        boolean isManyAge = false;
        if(31 <= age){
            isManyAge = false;
        }else{
            isManyAge = true;
        }
    }

 

이름에 정보 담기

메소드나 클래스는 명확하게 어떤일을 해야되는지 이름만보고 유츄할수 있어야 한다.

위의 메소드보다 아래의 메소드가 외부에서 사용을 했을 때 알기가 쉽다.

public int calculateType1(int first, int second) {
    return first + second;
}
public int addCalculation(int first, int second) {
    return first + second;
}

 

추상적인 단어보다 명확한 단어를 사용

자주쓰는 추상적인 단어 명확안 단어
get fetch, download
send deliver, dispatch, announce, distribute, route
find search, extract, locate, recover
start launch, create, begin, open
make create, set up, build, generate, compose, add, new
filter select, exclude

 

 

 

경계값에 대한 단어

경계를 포함 시작경계를 포함하고, 마지막 경계 포함을 안함
max/min, first/last begin/end

 

 

 

 

 

 

 

 



출처: https://secretroute.tistory.com/30 [Empty]

 

 

 

참고

읽기 좋은 코드가 좋은 코드다.

반응형