ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Clean Code #5 형식 맞추기
    교양/클린 코드 2022. 5. 2. 19:53
    728x90

    코드의 가독성에 필수적인 포맷팅

     

    포맷팃이 중요한 이유

    public void horriblyFormattedMethod() {
    	  System.out.println("First line");
            System.out.println("First line");
         System.out.println("First line");
        for (int i = 0; i < 3; i++) 
        System.out.println("number " + i);
    }
    
    
    public void horriblyFormattedMethod() {
        System.out.println("First line");
        System.out.println("First line");
        System.out.println("First line");
        for (int i = 0; i < 3; i++) {
        System.out.println("number " + i);
    	}
    }

     

    가독성에 필수적이다.

     

    코드를 수월하게 읽어나갈 수 있다.

    아마추어처럼 보이지 않는다.

    포맷팅으로 인해 코드를 잘못해석해 버그를 발생할 위험을 줄인다.

     

     

    클린코드 포맷팅

     

    적절한 길이 유지(200라인)

    • "코드 길이를 200줄 정도로 제한하는 것은 반드시 지킬 엄격한 규칙은 아니지만, 일반적으로 큰 파일 보다는 작은 파일이 이해하기 쉽다" -> 현업에서의 대부분의 코드들도 200라인 정도를 유지한다.
    • 코드 길이가 200라인을 넘어간다면, 클래스가 여러 개의 일을 하고 있을 수 있다. SRP 위배

     

    밀접한 개념은 서로 가까이 둔다.

    package fitnesse.wikitext.widgets;
    
    import java.util.regex.*;
    
    public class BoldWidget extends ParentWidget {
        public static final String REGEXP = "'''.+?'''";
        private static final Pattern pattern = Pattern.compile("'''(.+?)'''",
            Pattern.MULTILINE + Pattern.DOTALL
        );
        
        public BoldWidget(ParentWidget parent, String text) throws Exception {
            super(parent);
            Matcher match = pattern.matcher(text);
            match.find();
            addChildWidgets(match.group(1));
        }
        
        public String render() throws Exception {
            StringBuffer html = new StringBuffer("<b>");
            html.append(childHtml()).append("</b>");
            return html.toString();
        }
    }
    • 행 묶음은 완결된 생각 하나를 표현하기 때문에 개념은 빈 행으로 분리한다.
    • 변수 사용되는 위치에서 최대한 가까이 선언한다.

     

    Java Class Declarations

    package java.blah;
    
    import java.blah.blahdy.BlahBlah
    
    public class Blah extends SomeClass {
        
        public static int classVar1;
        
        private static Object classVar2;
        
        public Object instanceVar1;
        
        protected int instanceVar2;
        
        private Object[] instanceVar3;
        
        public Blah() {
        }
        
        public void doSomething() {
        }
        
        public void doSomethingElse(Object somePattern) {
        }
    }

    1. static 변수

      public -> protected -> package -> private 순서

    2. instance 변수

      public -> protected -> package -> private

    3.생성자

    4. 메서드

      public 메서드에서 호출되는 private 메서드는 그 아래에 둔다. 가독성 위주로 그룹핑

     

     

    Team Coding Convention

    팀의 코딩 스타일에 관한 약속

     

     

    개발 언어의 컨벤션이 우선이지만, 애매한 부분은 팀 컨벤션을 따른다.

    없다면, 함께 만들어 가는 것도 좋다.

    MySQL Convention Team Convention
    컬럼명은 snake_case로 네이밍한다. enum 타입으로 사용하는 varchar 타입의 경우 컬럼명은 _type으로 끝나도록 네이밍한다. 

     

     

    참고할 만한 컨벤션

     

    Google Java Style Guide https://google.github.io/styleguide/javaguide.html 

    Naver Hackday Java Convention https://naver.github.io/hackday-conventions-java/

    728x90

    '교양 > 클린 코드' 카테고리의 다른 글

    Clean Code #4 주석  (0) 2022.03.14
    Clean code #03 함수  (0) 2022.02.28
    Clean code #01~02 코드에 관하여  (0) 2022.02.24

    댓글

oguuk Tistory.