[우테코 프리코스] 1주차 회고록

Hyeo_Ni__·2024년 10월 22일
0

우아한테크코스

목록 보기
1/1
post-thumbnail

우테코 프리코스를 시작하게된 계기

프리코스: 진행 방식

🟡 과제 제출 전 체크 리스트

  • 터미널에서 java -version을 실행하여 Java 버전이 21인지 확인한다. Eclipse 또는 IntelliJ IDEA와 같은 IDE에서 Java 21로 실행되는지 확인한다.
  • 터미널에서 Mac 또는 Linux 사용자의 경우 ./gradlew clean test 명령을 실행하고, Windows 사용자의 경우 gradlew.bat clean test 또는 ./gradlew.bat clean test 명령을 실행할 때 모든 테스트가 아래와 같이 통과하는지 확인한다.


프리코스: 1주차 과제

과제 진행 요구 사항

  • 미션은 문자열 덧셈 계산기 저장소를 포크하고 클론하는 것으로 시작
  • 기능을 구현하기 전 README.md에 구현할 기능 목록을 정리해 추가
  • Git의 커밋 단위는 앞 단계에서 README.md에 정리한 기능 목록 단위로 추가
    AngularJS Git Commit Message Conventions을 참고해 커밋 메시지를 작성한다.
  • 자세한 과제 진행 방법은 프리코스 진행 가이드 문서를 참고

기능 요구 사항

  • 쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 전달하는 경우 구분자를 기준으로 각 숫자의 합을 반환
    ⇒ ex) "" => 0, "1,2" => 3, "1,2,3" => 6, "1,2:3" => 6
// text가 공백일 경우 0 반환
if (text == null) {}
if (text.isEmpty()) {}
// 구분자를 기준으로 문자열을 나누어 저장
String[] numbers = text.split(",|;");
  • 기본 구분자(쉼표, 콜론) 외에 커스텀 구분자를 지정
    → 문자열 앞부분의 "//"와 "\n" 사이에 위치하는 문자를 커스텀 구분자로 사용
if (text == null) {}
if (text.isEmpty()) {}
String[] numbers = text.split(",");

출력
java.util.regex.Matcher[pattern=//(.)\n(.*) region=0,7 lastmatch=]

  • 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException을 발생시킨 후 애플리케이션은 종료

입출력 요구 사항 및 실행 결과 예시

입력

  • 구분자와 양수로 구성된 문자

출력

  • 덧셈 결과
결과: 6

실행 결과 예시

덧셈할 문자열을 입력해 주세요.
1,2:3
결과: 6

프로그래밍 요구 사항



✏️ 배운점

커스텀 구분자

자바에서 정규 표현식 전문적으로 다루는 클래스인 java.util.regex 패키지를 사용,
패키지 안의 클래스중 주로 Pattern 클래스와 Matcher 클래스가 사용된다.

정규식 클래스의 장점은 정규식을 Pattern 객체로 미리 컴파일 해둘수 있어,
처리 속도 빠르고, 매칭된 데이터들을 좀더 상세히 다룰 수 있다.

Pattern pattern = Pattern.compile("//(.)\n(.*)");

String text = "//;\n1;2;3";
Matcher m = pattern.matcher(text);

IllegalArgumentException이란?

호출자가 인수로 부적절한 값을 넘길 때 던지는 예외로,
간단히 설명하면 사용자가 값을 잘못 입력한 경우에 발생하는 예외이다.

public void setMonth(int month) {
	if (month > 12) {
    	    throw new IllegalArgumentException("달은 12월까지 입니다.")
    	}
	this.month = month;
}

그러나 IllegalArgumentException 예외 말고도, 다른 예외 처리 방법이 있다. 그 처리 방법들 중 두 가지를 가져와봤다. 내용은 아래와 같다.
IllegalStateException

대상 객체의 상태가 호출된 메서드를 수행하기에 적절하지 않을 때 발생시킬 수 있는 예외로,
간단히 설명하면 체스 게임을 진행하는데, 체스판이 생성되지 않은 경우 발생하는 예외이다.

public void start() {
	if(this.board == null) {
    thorow new IllegalStateException("보드판이 준비되지 않았습니다.")
}
NullPointerException

null 값을 허용하지 않는 메서드에 null을 건낼 때 발생시킬 수 있는 예외로,
IllegalArgumentException를 발생시킬 수 있으나 관례상 null을 건낼 경우
NullPointerException 예외를 발생시킨다.

public void setMonth(int month) {
	if (month == null) {
    	throw new NullPointerException("달은 1월부터 12월까지 입니다.")
    }    
    if (month > 12){
    	throw new IllegalArgumentException("달은 12월까지 입니다.")
    }
	this.month = month;
}

소감문

한 주 동안 리팩토링 방법이나 TDD 등 프로젝트에 접목해보지 못한 것 들을 알 수 있는
소중한 시간들이었던 것 같다.

리팩토링 방법이나 TDD를 좀 더 응용해서 2주차를 진행하고,
공통 피드백을 받아 부족한 부분을 한 단계 더 보완해낼 예정이다.

정신없이 지나간 1주일이었지만 정말 소중한 시간이었으며,
예상보다 더 많은 것들을 배울 수 있어 좋았다.
특히나 부족하게 여겨졌던 기초를 한 번 더 다질 수 있었고,
사람들과 디스코드에서 대화하며 다양한 정보를 얻을 수 있어 좋았던 것 같다.

이를 토대로 2주차도 나아가볼 예정이다.

profile
개발자로 성장 중 입니다.

0개의 댓글