PBL : 유지보수

송민준·2023년 7월 14일

PBL 교육

목록 보기
9/11

유지보수

개발 코드 짤 때 실제로 유지보수(짜여져있는 코드를 수정)하는 시간이 굉장히 더 많이 들어간다. 최소 3배, 최대 10배가 들어간다. 그래서 보통 SI 업체들이 프로젝트를 받았을 때 처음부터 짜자는 의견을 많이 낸다. 왜냐면 다시 하는게 더 빠르니까.

어제 발표했던 코드들이 학생 수준의 코드들인데 직장인 버전으로 바꿔보자

  • 학생의 코드
    if ... || ... || ... {
    ...
    //오류
    //리턴 메시지.
    //끝
    }
    else{
    ...
    //정상 실행
    }
    
    • 여기서 if else 는 분기점, 즉 갈림길을 선택한다. 그렇다면 가면 갈수록 갈림길의 depth가 길어진다. 때문에 tree처럼 디버깅을 할 때 2의 n승을 하게 된다. 나는 분명 몇줄만 짰는데 2의 n승을 디버깅해야된다. 코드에 있어서 오류 탐지를 해야될게 너무 많다.
  • 직장인의 코드
    if ... || ... || ... {
    ...
    //오류
    //리턴 메시지.
    //끝
    }
    
    //정상 실행
    
    1. 어차피 if에서 끝날꺼면 else를 지워도 된다. → if만 메모리에 올라간다.

      
      error_param_array = [..]
      for e in error_param_array:
      	if e is True:
      		//오류
      		//리턴메시지
      		//끝
      //정상 실행
      
    2. 체크해야하는 파라미터를 array로 두고 루프를 돈다. 루프에서 하나씩 빼서 체크를 하고 하나라도 걸리면 리턴한다.

    • 코드를 해석할 때 블럭으로 해석하자. 학생들을 라인 바이 라인으로 해석한다. 누가봐도 아는건데. 그건 코드리뷰가 아니다. 위의 정상실행 전까지 박스(블럭)는 에러체크고 아래는 정상실행이다.

    • → 그러면 에러체크 블럭은 class checkError 아래와 같은 식으로 뺴놓는다.

      ```
      class checkError:
      	//최상단에 array 같은 걸 박아놓는다.
      	def aaa:
      	...
      	def bbb:
      	...
      ...
      
      ```
      ~~if ... || ... || ... {
      ...
      //오류
      //리턴 메시지.
      //끝
      }~~
      check = new checkError.aaa()
      //정상실행
      
    1. 이렇게 클래스를 선언하고 에러를 체크한다. 만약 에러에 변경을 해야한다면 클래스에서만 수정하면 된다.
  • 학생들이 왜 이런 생각을 안든 상태로 졸업하는가? : 하나의 시퀀스로 짜더라도 정상적으로 작동하는 경험이 많았기 때문이다.
  • 그래서 일단 학생의 방식으로 길게 작성해보고 직장인의 방식으로 바꿔야할 동기를 얻자.
  • 그리고 이 박스(블럭)이 무엇인지 스스로 또는 다른 이에게 설명하도록 만들자.
profile
개발자

0개의 댓글