본문 바로가기

플밍 is 뭔들/관련글&리뷰

좋은코드 작성법

※ 다른사람의 코드를 보다보면 물흐르듯 쉽게 읽히는 코드가 있고 그렇지 않은 코드가 있다.
이런걸 직접느껴보니 코딩을 어떻게 하느냐가 정말 중요하다고 생각하던 찰나에 서점을 돌다 우연히 발견한 이책
박진수 저자의 좋은 코딩 나쁜 코딩 2판이다.
 

책을 보면서 알았지만 평소 신경쓰지 못했던 부분들을 다시한번 생각나게 해주었고
새로운 정보도 얻을 수 있어 나름 유용했던것 같다.
개발자라면 누구나 한번쯤은 읽어봐도 손해는 안볼 책인것 같다.

** 아래 내용은 책을보며 내게 필요한 부분을 따로 요약한 내용이다.

1.코딩을 시작하기 전에...
 - RAF 전략을 피하라!! 
     RAF 전략이란 Run And Fix의 약어로 일단 실행해보고 고치는 방식이다.
     이러한 방식은 에러잡기도 쉽지않으며 소스를 수정하게 되면 또 다른 오류가 생길 수 있기때문에 좋지 못한 방법이다.
     그렇기 때문에 아래와 같은 방식으로 한다

1) 프로그램의 구상 단계에 투자하는 시간을 늘려라

2) 플로차트나 의사코드 등을 도입해 프로그램의 논리를 충분히 구상해 보라

3) 종이에서 작업하는 시간을 컴퓨터에서 작업하는 시간보다 많게 하라

4) 사전에 프로그램의 결함을 예측하고, 그것들을 제거할 수 있는 방법을 찾아보라

5) 충분히 심사숙고한 뒤에 코드를 작성하라

     즉 무턱대고 타자부터 두드리기 보단 논리적으로 생각을 많이 해보고 코드를 작성하라는 뜻


2.구분을 잘 할수 있도록 공백을 잘 준다.
 - 선언부와 실행부를 구분 할 수 있도록 공백을 주고 의미있는 문장끼리 묶어 단락을 만들어라

          1) 선언부와 실행부사이의 공백을 두어 구분이 쉽도록 한다.

          2) 실행부에서 단락별로 공백을 준다(단락이란 생각의 덩어리)

public class ex{
     public static void main(String args){

           //선언부
           int num1;
           int num2;
           int result;
 
           //실행부(단락별로 공백을 준다)
           //덧셈,곱셈,나눗셈,나머지로 단락을 나누어 사이에 공백을 줌
           result= num1+num2;
           System.out.println(result);
           
           result= num1*num2;
           System.out.println(result);

           result= num1/num2;
           System.out.println(result);

           result= num1%num2;
           System.out.println(result);
     }
}


3.함수와 함수사이에 공백을 준다.
 - 함수 사이에 공백을 주면 함수를 구분하기 쉬워진다.
public void func1(){
     //func1 함수 내용
}


public void func2(){
     //func2 함수 내용
}


public void func3(){
     //func3 함수 내용
}


4.변수 초기화 시 줄을 맞춘다.
 - 변수의 선언과 초기화를 중구난방하게 하지 말고 성격이 비슷한것들 끼리 나누어 선언하고
   나누어 묶은 변수 사이에 공백을 주어 한눈에 변수파악이 가능하도록 한다.
public class ex{
     public void main(String args){
          int num1;
          int num2;
          int num3;

          int newItemLength =0;
          int oldItemLength =10;
          
          Date stDate;
          Date edDate;
     }
}


5.들여쓰기를 하는 습관을 들인다.
 - 들여쓰기를 잘 하면 가독성이 높아지고 소스코드를 한눈에 볼 수 있다.


6.주석을 잘 작성한다.
 - 주석에는 여러종류의 주석이 있다. 이력관리를 하는 주석도 있고 함수의 로직을 설명하는 주석도 있다.
   그 외에도 변수를 설명하는 주석이라던가 여러가지 주석이 있으니 상황에 맞는 주석을 잘 작성하여 소스코드의 가독성을 높히고 분석을 도와주자
public class ex{
     public void main(String args){
          
          for(){
          if(){
      
          if(){
          
          }else{

          }
     }else{

          if(){
          
          }else if(){
          
          }else{
          
          } // inner if-else end
     } // outer if-else end
     } // for end
     } // main function end
}


7.변수 이름을 체계적으로 짓는다
 - 개인적인 생각으론 변수이름만 잘지어도 주석의 효과가 있어 가독성이 높아진다고 생각한다. 
   그렇기 때문에 변수 이름을 잘지어야 한다.
     
          1) 헝가리안 표기법으로 변수 이름을 지어라
              헝가리 표기법?? - 이름 앞에 자료형(Data Type)을 포함한 변수의 성격이나 역할을 표기하는 방식
              ex) 정수형 변수 예시 : iCount, strName

          2) 함수의 역할을 접두사로 활용하라
              함수의 이름을 지을때는 동사 + 함수이름 형태료 짓는다. 그래야 함수 이름만 보고도 함수의 기능이 예상가능함
              ex) getName(), setName(), removeNameList().....

          3) 변수 이름은 의미를 잃지 않는 법위내에서 짧게 지어라

          4) 비슷한 변수 이름을 사용하지 마라

          5) 변수 이름은 의미 있게 지어라

          6) 이름이 길면 밑줄 또는 대소문자로 구분하라 
              ex) Break_control_system_panel, breakControlSystemPanel
        

8.그 외의 주의할 점...
 - 마지막으로 주의할 몇 가지를 더 알아보자. 
         
          1) 연산자의 우선순위에 의존하는 식을 만들지 마라
              ex) a = 2 + 3 * 4   >>>>>> a = 2 + ( 3 * 4)

          2) 3항 연산자보다는 if문을 사용하라    
              ex)  b = ( a==1 ) ? b+2 : b+3  >>>>>>>>>>>>>  if(a==1){ b = b+2 } else { b = b+3 }   
 
          3) 배열의 차원은 3차원으로 한정하라

          4) main메소드의 역할을 잘 생각하라.
              main메소드에 지저분하게 기능을 구현하지 말고 기능별로 따로 메소드를 만들어 호출을 해준다.

          5) 될 수 있으면 전역변수 사용을 자제하라

          6) 열었다면 반드시 닫아 줘라 (무언가를 .open() 하면 .close()를 해준다.)

          7) KISS(Keep It Simple and Short) 원칙을 지켜라
               - 주로 문장론에서 언급되는 용어로 문장을 간결하고 단순하게 작성하는 원칙을 말한다.
                  간단한 문장일수록 정보 전달이 용이하고 받아들이는 입장에서도 이해하기 쉽다.
                  코드를 이해하기 쉬우면 다음과 같은 효과를 얻을 수 있다.
                  코드의 결함을 고치기(Debugging) 쉽다.
                  코드를 개선하기(Refactoring) 쉽다.
                  코드를 유지하기(Maintenance) 쉽다.
                  코드를 보수하기(Rebuilding) 쉽다.
                  코드를 재사용하기(Reusing) 쉽다.