목차 배경지난달에 회사 업무 중에 배치 프로그램 하나를 수정하며 리팩토링까지 진행한 적이 있다. 로직이 엄청 복잡하거나 논리적으로 어려운 배치는 아니었지만, 주요 로직 중 하나로 다른 개발 팀이 데이터를 넣어주는 테이블이 있었고 또 다른 개발팀에게 POST 메서드로 API를 요청해서 데이터를 처리하는 부분이 있었다. 또한 이 배치 수행 결과는 다음 배치 수행에까지 영향을 주고 있었다. 프로그램의 주요한 로직이 이처럼 다른 개발팀과 팀 내 다른 배치와 긴밀하게 얽혀있다보니 자연스럽게 성공하는 케이스 이외에도 실패할 때는 어떻게 동작할지 고민하게 되는데, 기존 코드상으로는 실패할 때 어떻게 동작할지 / 지금 방식대로 동작하는 게 적절할지 / 개발자가 어디까지 인지해야 할지 / 배치 오류 발생 시 개입을 최소..
목차 도서정보 책 제목(부제목) : 요즘 개발자(MZ 선배가 전하는 학습 · 커리어 브랜딩 · 취업과 이직 · 협업 · 네트워킹 기술) 요즘 개발자 - 예스24 MZ 개발자를 위한 성장 멘토링이 책은 여러분보다 조금 앞서 개발자가 된 선배가 전하는 커리어 가이드입니다. 취업의 첫 단추부터 네트워크 형성, 효과적인 프로그래밍 학습과 피드백 요청 방 www.yes24.com 배경 평소 종종 책을 구경하러 서점에 가는데, 어느 날은 책 구경을 갔다가 시선을 사로잡는 책이 있었다. ‘요즘 개발자’ 라는 책이였는데 특이한 표지 때문인지 어떤 내용인지 궁금증이 생겨 충동적으로 구매했다. 시선을 사로잡을 정도로 신선했던 제목과 표지에 비해 내용이 심심한 부분도 있었지만 전체적으로 재미있게 읽었다. 내용 이 책의 주요..
목차 글 목록[Java] 함수형 프로그래밍(Functional Programming)과 람다식(Lambda Expression) (1/2)[Java] 주요 함수형 인터페이스(Function Interface) (2/2)배경(지난 [Java] 함수형 프로그래밍(Functional Programming)과 람다식(Lambda Expression) (1/2) 글에 이어 작성한 내용입니다.) 최근 회사에서 리팩토링 중에 다음과 같은 코드 중복을 함수형 인터페이스를 활용하여 개선한 적이 있다.public class ServiceA { private final ServiceC serviceC; private final RepositoryA repositoryA; public void methodA(){ List o..
목차 글 목록 [Java] 함수형 프로그래밍(Functional Programming)과 람다식(Lambda Expression) (1/2) [Java] 주요 함수형 인터페이스(Function Interface) (2/2) 배경 최근에 회사에서 내가 개발했던 코드를 리팩토링하며 중복을 개선하려했었는데, 다음과 같은 중복이 여전히 남아있었던 적이 있다. 코드를 직접적으로 작성할 수 없어 예시로 풀어보자면, 전체적인 로직 자체는 거의 유사하지만 결국 호출하는 메서드와 참조하는 객체(repositoryA.save(), repositoryB.save())가 달라 중복 코드가 발생했던 케이스다. public class ServiceA { private final ServiceC serviceC; private f..
목차 배경 네트워크와 HTTP에 대한 강의를 듣는 중에 유익한 글을 공유받아 읽어보았는데 내용이 만족스러웠고 평소 고민했던 내용들과 관련되어 있어 많은 도움이 되었다. 한글로 정리해서 공유해 두면 읽기 편할 것 같아 블로그에 정리해 두었다. (https://restfulapi.net/resource-naming/ 를 읽고 해석하여 정리한 내용입니다. 의역 및 오역이 있을 수 있습니다.) REST API URI Naming Conventions and Best Practices In REST, having a strong and consistent REST resource naming strategy – will prove one of the best design decisions in the long t..
목차 배경 이번 글에서는 변수 선언과 할당을 나눠야하는 경우와 그렇지 않은 경우를 다뤄보려고 한다. 사실, 특별한 이유가 없다면 변수 선언과 할당을 나누지 않는 것이 좋다. 변수 선언과 할당을 나누는 것을 권장하지 않는 이유 먼저 가독성을 저해하고 코드 이해의 어려움을 초래한다. 코드의 가독성은 항상 중요하다. 내가 작성한 코드는 나 혼자만 보는 것이 아니라 다른사람이 함께 보는 코드이며 결국 개발을 하다보면 코드를 기반으로 의사소통, 문제해결 등 모든 주요 업무를 진행하기 때문이다. 이런 점에서 변수 선언과 할당을 나누면 코드의 흐름을 이해하기 어려워진다. 즉, 다른 사람이 작성한 코드를 읽을 때 해당 변수가 언제 어떻게 초기화되었는지 명확하게 파악하기 어려워진다. 변수 선언과 할당을 나눈다는 것은 결..
목차 배경 코드리뷰 중에 다음과 같은 의견을 들은 적이 있다. '로직이 들어가는 메소드가 toString() 보다 상단으로 올라가면 더 좋을 것 같아요', '보통 static 변수를 먼저 선언하는 것 같아요 😅' 사실 평소에는 습관적으로 클래스 -> 변수 -> 생성자 -> 메서드 순으로 메서드와 필드를 선언하고 있었고, 다른 코드를 참고하더라도 비슷한 형태로 선언하고 있어서 이를 당연하게 여겼었다. 하지만 코드리뷰 중에 위와 같은 의견들을 듣기 시작하면서 어떤 순서로 선언하는 게 좋을지 궁금증이 생겨 관련 문서와 글들을 찾아보았고, 이러한 컨벤션을 준수하는 것만으로도 서로 이해하기 쉬운 코드를 작성하는데 큰 도움이 될 것 같아 블로그에도 기록해 두었다. java 메서드 및 필드 선언 순서 컨벤션 이러한 ..
목차 도서 정보 이것이 자바다 - 예스24 JAVA 17 버전으로 업그레이드해서 돌아왔다! 7년 동안 꾸준히 사랑받은 자바 베스트셀러 1위, 『이것이 자바다』 개정판!『이것이 자바다』는 기본 개념에 충실한 설명으로 2015년 초판이 출간된 www.yes24.com 배경 java라는 언어 자체를 대학생 때부터 다뤄봤으니 충분히 다룰 줄 알고 충분한 이해와 기본기도 지니고 있다고 생각하고 있었지만, 최근 들어 언어 자체에 대한 이해가 부족하고 제대로 사용하지 못하고 있는 듯한 느낌을 많이 받기 시작했다. 업무가 늘어나고 작성하는 코드의 양 자체가 많아지면서, 다양하고 복잡한 프로그래밍 문제들을 만나기 시작했고 더 이해하기 쉽고 좋은 퀄리티의 코드를 작성하고 싶은 욕심이 생겼지만 내가 가지고 있는 지식만으로는..
목차 배경 java 8부터는 반복문을 더 효율적으로 처리할 수 있는 Streams API를 제공한다. 하지만 프로젝트와 실무 등에 streams API를 적용하여 코드를 작성하다 보면 의도와 다르게 동작하거나 오히려 가독성이 떨어지고 사용하기 불편하다는 느낌을 받은 적이 있다. 이번에는 Streams API의 장점과 동작 원리 그리고 (오히려 가독성이 떨어지고 불편함을 초래하는 상황을 방지하기 위해) 사용 시 주의사항에 대한 내용을 찾아보고 내가 이해한 내용과 함께 이를 정리해 보있다. Streams API의 장점 Streams API의 장점에 대해 소개하기 전에 어떤 경우에 Stream을 활용하는게 좋을지 그리고 그때의 장점은 무엇인지 알아보기 위해 기본적인 for loop부터 정리해 보았다. 우선 다..
목차 배경 프로그램을 개발하면서 예외가 발생한다면 어떻게 처리할지, 적절한 예외 처리 방안을 무엇일지 고민하는 것은 개발자의 필수 덕목이라고 생각한다. 하지만 나조차도 이러한 고민을 놓쳤던 경험이 종종 있어, 이번 글로 에외 처리시 고려해야할 부분과 적절한 예외 처리 방안에 대해 정리해보고자 한다. (적절한 예외 처리 방안을 도출하기 위해서 선행지식으로 (java에서) 예외에 대한 개념과 어떤 예외 클래스가 있는지를 알아두어야한다고 생각한다. 이를 위해 이 글을 작성하기에 앞서 [Java] 예외와 예외 처리에서 java의 예외에 대한 개념, 예외 클래스와 사용하는 방법 등을 정리해두었다.) 내용 실제로 추가 기능 개발 업무를 하고나서 코드리뷰를 받던 중에 "여기서 만약 예외가 발생하면 어떻게 돼요?" 라..
목차 배경 응용 프로그램은 동작 중에 예상치 못한 어떠한 이유로 중단될 수 있다. 개발자로서 이처럼 프로그램에 실행 오류가 발생할때 왜 발생했고 어떻게 대처할지, 어떻게 방지할지할 수 있을지 등은 반드시 알아두어야하며, 응용 프로그램 개발 중에 꼭 고민해야하는 부분이라고 생각한다. 그 중 java에서는 이러한 프로그램 실행 오류를 어떻게 정의하고 있으며 개발자가 어떻게 사용할 수 있는지 정리해두었다. 에러(Error)와 예외(Exception) java에서 프로그램 실행 오류는 크게 에러와 예외라는 두가지 개념으로 나뉜다. 에러(Error)는 컴퓨터 하드웨어의 고장으로 응용프로그램의 실행 오류가 발생하는 것이며, 아무리 견고하게 작성할지라도 개발자가 대처할 수 있는 방법이 없는 오류이다. 반면 예외(Ex..
목차 배경 자바 기본 개념을 공부하던 중에 Java 9 부터 제공되는 모듈에 대한 소개가 인상깊어 기록해두었다. 실무에서 사용되는 프로젝트를 보면 규모가 커지면서 협업과 유지보수에 어려움을 겪게되는 경우가 많은데, 이러한 상황에서 프로젝트를 모듈화하여 구성한다면 협업과 유지보수를 쉽게 하고 더 나아가 모듈을 통한 재사용성도 향상시킬 수 있다는 생각이 들어 많은 도움이 될 것 같아 블로그에 추가로 작성하였다. 모듈 들어가기에 앞서, 모듈에 대해 간략하게 먼저 작성하는게 좋을 것 같다. 모듈은 java 9 부터 지원하는 기능이며 패키지 관리 기능까지 포함된 라이브러리이다. 일반적인 라이브러리는 외부 프로그램에서 라이브러리 내부에 포함된 모든 패키지에 접근할 수 있지만, 모듈은 일부 패키지를 은닉하여 접근할 ..