일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
- 세미나
- REST API
- docker
- Data REST
- spring bean
- JPA mapping
- ORM
- 톰캣
- Spring
- spring camp
- spring batch 코드
- Spring Data JPA
- 코드 리뷰
- spring boot tomcat
- JPA
- ApplicationPidFileWriter
- static inner class
- JUnit
- spring jpa
- spring-mvc
- Spring Data REST
- tomcat
- spring-webmvc #코드읽기
- IntelliJ
- Spring Batch
- batch
- SuperTypeToken
- spring-webmvc
- spring pid
- spring boot
- Today
- 3
- Total
- 916,325
woniper
이유있는 코드, 설명할 수 있는 코드 본문
몇년 전 모 회사 면접을 볼때 이런 질문을 받았다.
1 2 3 4 5 6 7 8 9 10 11 | public void method() { Object obj1 = null; Object obj2 = null; if(flag) { obj1 = new Object(); obj1 = new Object(); } else { throw new IllegalArgumentException(); } } | cs |
위 코드 obj1과 obj2를 바로 초기화 하지 않고 if, else 문에서 객체를 초기화 했는지에 대한 질문이였다. 그 회사는 코딩 테스트를 본 후 인터뷰를 진행하는데 내가 작성한 코드를 인터뷰를 통해 검증하는 시간이다.
예를 들기 위해 위와 같이 의미를 파악 할 수 없는 코드로 설명을 했는데, 내가 설명하고자하는 이유는 Exception 처리를 하기 위해서였다. 이 질문을 받고 내가 한 답변은 지금 생각해도 황당한 답변이였을 것이다. "제 코딩 스타일이 그렇습니다.." 창피하지만 정말 저렇게 말했다. 긴장도 했고 뭣 모르던 시절이다. 혼자 코딩을 할때는 Exception 처리하기 위한 의도였는데 인터뷰에서 황당한 답변을하고 말았다.
그럼 아래 코드는 어떻게 설명할 것인가??
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | @Test public void jdbc() { Connection connection = null; PreparedStatement statement = null; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("url"); statement = connection.prepareStatement("query"); // ... 생략 ... } catch (SQLException e) { // ... 생략 ... } catch (ClassNotFoundException e) { // ... 생략 ... } finally { // connection, statement close } } | cs |
자바 개발자라면 JDBC 코드를 한번쯤은 작성해봤거나, 책에서라도 봤을 것이다. 보통 위와 같이 작성하는데 Connection, PreparedStatment 선언을 null로 한 이유를 생각해보자. 단순하다. finally에서 close를 해야하기 때문이다. try 코드 블럭 안에서 초기화 했다면 finally에서 객체 접근이 불가능하기 때문 아닌가? 자세히 설명하지 않아도 누구나 이해할 것이다.
개발자는 자신이 작성한 코드를 설명할 수 있어야하고, 충분한 이유가 있어야한다는 것이다. 말은 쉽지만 아직도 나는 관례대로 코딩하는 부분이 분명히 존재할 것이다. 하지만 공부를 하다보면 항상 생각하게 되는 것이 내 생각이나 의도를 설명할 수 있어야한다고 생각한다.
아무리 쉬운 코드를 작성하더라도 그 코드에 대한 설명과 작성한 방법에 대한 타당한 이유를 설명 할 수 있어야된다고 생각한다. 조금 더 생각하고 코딩하자.
'이야기' 카테고리의 다른 글
Spring Camp 2017 연사 후기 (2) | 2017.05.06 |
---|---|
REST API와 Metadata (0) | 2017.03.17 |
최소한 단축키는 쓰자. 되도록이면 타자 연습도 하자. (4) | 2016.12.31 |
2016년 정리 (2) | 2016.12.26 |
장애를 해결하는 방법 (1) | 2016.12.03 |