프로그래밍 중 버리기 아까운 코드는 어떻게 하는 것이 좋을까?

2015-03-25 11:15

프로그래밍을 구현하다 보면 다음과 같은 느낌이 들어 소스 코드를 삭제하지 않고 주석처리하는 경우가 있다. * 이 코드가 지금은 사용하지 않지만 언젠가 사용할 수 있을꺼야? * 이 코드를 내가 정말 힘들게 구현해서 삭제하기 아깝다. * 분명 사용하지 않는 코드로 파악되지만 내가 구현한 코드가 아니라 함부로 삭제하기 힘들다.

이 외에도 다양한 이유로 소스 코드를 삭제하지 않고 주석처리하는 경우가 많다. 예를 들어 다음과 같이 주석처리된 소스 코드가 여러 곳에 남아 있는 상황이 발생한다.

  /*
  public JSONObject getSessionDetailJson(int sessionId) throws SQLException {


      String sql = "select * from session where session_id = ?";
      mPstmt = mConn.prepareStatement(sql);
      mPstmt.setInt(1, sessionId);


      ResultSet rset = mPstmt.executeQuery();
      JSONObject session = new JSONObject();


      while (rset.next()) {
          session.put("category", rset.getString("category"));
          session.put("company", rset.getString("company"));
          session.put("detail", rset.getString("detail"));
          session.put("pt_link", rset.getString("pt_link"));
          session.put("session_id", rset.getInt("session_id"));
          session.put("session_name", rset.getString("session_name"));
          session.put("speaker_name", rset.getString("speaker_name"));
          session.put("thumbnail", rset.getString("thumbnail"));
          session.put("time", rset.getTime("time").toString());
          session.put("track_id", rset.getInt("track_id"));
          session.put("video_link", rset.getString("video_link"));
      }


      return session;
  }
  */

이와 같이 현재 시점에 필요하지 않은 코드를 굳이 주석 처리할 필요가 있을까? 현재 사용하지 않는 코드라면 삭제하는 것이 좋지 않을까? 과거에는 svn, git과 같은 버전 관리 시스템을 사용하지 않았고, 소스 코드를 참고할만한 곳이 많지 않았기 때문에 주석을 통해 유지하는 것이 의미가 있었을 수 있다. 하지만 최근 개발 환경은 svn, git과 같은 버전 관리 시스템을 사용하는 것이 일반적이 되어, 이전에 구현한 코드를 다시 원복할 수도 있다. 또한 수 많은 오픈 소스 코드를 활용해 더 좋은 코드를 찾는 것도 어렵지 않다.

지금은 소스 코드를 얼마나 깔끔하고 가독성이 좋은 코드로 유지하는 것이 더 중요하지 않을까? 현 시점에 굳이 필요없다고 생각하는 코드가 있다면 아까운 마음을 버리고 가차없이 삭제하자.

그렇다면 이와 같이 주석을 통해 유지할 필요가 있는 소스 코드는 없을까? 분명 있으리라 생각하는데 딱히 생각나지 않는다. 그런 상황이 있다면 공유해 주면 좋겠다.

0개의 의견 from FB

2개의 의견 from SLiPP

2015-03-25 12:26

개인적으로는 완전한 trade-off 관계에 있는 코드에 한해서 주석으로 남겨두는게 좋을 것 같습니다. 개인적인 사례로, 문서 변환 프로그램에서 엑셀의 객체를 HTML상의 상대 좌표나 절대 좌표, 둘 중에 하나로 변환해야 하는데 이 좌표 방식이 각각 장점과 한계를 서로 다르게 갖고 있어서, 기존에 절대좌표로 표현하던 것을 상대좌표로 변경하면서 Comment-out했던 코드를 복원하여 쉽게 작업한 것을 기억합니다. 물론, 여기에는 기존에 상대좌표의 한계점을 개선할 아이디어가 있었기 때문에 바꿀수 있었지만..

만약, Comment-out된 코드가 없었다면 아마 그 부분을 직접 다시 작성하느라 품이 많이 들지 않았을까 합니다. 형상관리 로그로도 그런 부분을 쉽게 찾을 수 있는 것도 아니었고, 아마 주석으로 한 줄 정도 ( 상대좌표에서 절대좌표로 옮김 ) 와 같은 주석이 없으면 찾기 어려울 것 같습니다.

2015-04-02 18:50

최근까지 고민하고 있는 내용이라...

저는 무조건 불필요한 소스는 무조건 제거하는편이 코드를 리딩하는데 좋다는 생각을 가지고 있었습니다. 어차피 버전관리 시스템에서 이력을 저장해주니 필요할 때 검색 해서 보면 된다는 생각이었습니다. 그렇지만 다른 분이 작성한 소스를 보게되니 불필요한 소스에 아래와 같이 이 소스를 왜 주석 처리를 했는지에 대해 명확히 코멘트를 작성하고 유지하는 것을 보게 되었는데 나쁘지 않은 방법이라는 생각이 들었습니다.

 /*
  * [2015. 04. 02 coozplz]
  *  XX와 동일한 기능을 제공함으로 해당 메소드는 주석처리하도록 한다.
  *  
  public JSONObject getSessionDetailJson(int sessionId) throws SQLException {
      String sql = "select * from session where session_id = ?";
      ...
      return session;
  }
  */
의견 추가하기

연관태그

← 목록으로