본문 바로가기
TIL

[231027] 팀 과제, 좋은 개발자 특강

by 진진리 2023. 10. 27.
728x90
  • 알고리즘 문제 풀기

int 배열 {-1}을 리턴하고 싶을 때 return {-1};과 같이 하면 오류가 발생한다. 배열은 참조형 변수이기 때문에 주소를 리턴하지 못하기 때문인 듯하다. 이때에는 return new int[] {-1};과 같이 인스턴스를 생성해서 리턴해줘야 한다.

어제 개인 과제 피드백을 받으면서 람다와 스트림을 자주 사용하도록 노력해보라는 얘기를 들었기 때문에 람다와 스트림을 인식하면서 알고리즘 문제를 풀었는데 어떻게 적용하면 좋을지 전혀 감이 안 와서 실제로 사용해보지는 못했다.

 

  • 팀 과제

팀원분이 올리신 PR을 보면서 코드리뷰를 했는데 반복되서 출력되는 문자열들을 String 상수로 미리 선언한 후 이용하는 방식을 보게되었다. 그렇게 하니 print문이 깔끔하게 보기 좋아서 나도 다음에는 그런 방법을 사용해보면 좋을 것 같다.

 

또한 리스트의 null과 empty의 차이에 대하여 공부해보았다. 리스트를 선언만 하고 생성자를 대입하지 않은 경우가 null이고, 생성된 상태에서 요소가 들어있지 않은 상태가 empty이다.

만약 선언하자마자 객체를 대입해주는 경우에는 이후 코드에서 isEmpty()를 사용해서 확인해주면 되지만 그렇지 않으면 두 경우 모두 생각해주어야 한다.

 

public Map<String, Reservation> getReservationMap(String customerId) {
        return reservationMap.entrySet().stream()
            .filter(entry -> entry.getValue().getCustomer().getId().equals(customerId))
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
    }

팀원분이 작성하신 해당 코드에서는 스트림을 사용하셔서 입력받은 customerId와 일치하는 Map의 entrySet을 가져와 다시 Map으로 만들어 리턴하였는데 나는 아직 스트림에 익숙하지 않아서 이런 코드를 보게 되어 신기했다.

스트림을 사용하니까 코드도 간단해지고 이해도 잘 되어서 좋다는 생각이 들었다.

 

깃 pull 취소 명령어: git reset --hard ORIG_HEAD

 

  • 싱글톤 패턴?

팀 프로젝트에서 코드를 merge하는 과정에서 같은 데이터베이스 객체를 여러번 생성하는 경우가 발생했다는 점을 팀원분께서 알려주셨다.

그 부분을 어떻게 수정하면 좋을지 고민하면서 싱글톤 패턴에 대해 듣게 되었다.

설명해주신 것을 들었을 때는 싱글톤 패턴으로 이용하고자 하는 클래스 내에서 자신을 private 필드로 선언하여 인스턴스화시킨 후 해당 객체를 return해주는 메소드를 만드는 것이라고 이해했다.

그리고 싱글톤 패턴에 대해 정리한 블로그 글을 공유해주셔서 읽어 보았다.

 

필요성: 인스턴스를 하나만 만들어 사용하기 위한 패턴으로 인스턴스를 여러 개 만들어 사용하게 되면 자원을 낭비하게 되거나 버그를 발생시킬 수 있을 때 사용!

 

public class SingletonTest {
    private static volatile SingletonTest instance = new SingletonTest();
 
    private SingletonTest() {}
    
    public static SingletonTest getInstance() {
        return instance;
    }
}

  • 좋은 개발자 특강

다른 문화권의 글을 많이 읽기: 블로그 미디엄, 깃허브의 트랙관련 디스커션 등

개인 프로젝트: 관심있는 주제로 간단하더라도 고민과 실행하는 과정이 실력 향상의 시작점

소통: 상대방과 감정이 상하지 않고 결론이 나올 수 있게끔 소통할 수 있도록. 스몰토킹, 관심사, 정확한 끝맺음!

 

소감: 분야와 관련된 뉴스나 글을 많이 읽는 것이 중요하다는 것은 알고 있었는데 이렇게 다시 한번 듣게되니 동기부여가 되었다. 그래서 관련 앱도 깔아보고 뉴스레터도 신청하고 말씀해주신 미디엄 등의 사이트들을 북마크했다.

글을 자주 읽으려고 노력하면서 좋은 글이 있다면 가끔씩 TIL에도 리뷰를 남기도록 해야겠다.

그리고 개인 프로젝트에 대해 들으니까 이전에 간단히 웹 개발 강의도 들은 만큼 사소한 것이라도 해결하고 싶은 문제 상황이 있다면 실행에 옮기고 싶다는 의지가 생겼다.

지금 드는 생각은 친구가 영화 관련 학과에서 학교를 다니고 있는데 영화를 찍는다는 행위가 수준높은 협업과 스케줄 관리가 필요한 만큼 감독인 친구를 위한 웹 사이트를 만들어보면 어떨까 싶은 생각이 든다.