{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":152044195,"defaultBranch":"master","name":"java-racingcar","ownerLogin":"next-step","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-10-08T08:24:32.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/25274995?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1711674338.0","currentOid":""},"activityList":{"items":[{"before":"6ef7ceac7ab0c8deee31eb64b24c8dad495f1f8b","after":"563b2fb44edc057a78b6785d2a1a89c94c1d8614","ref":"refs/heads/jaejeong1","pushedAt":"2024-05-07T21:32:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"javajigi","name":"박 재성","path":"/javajigi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/520500?s=80&v=4"},"commit":{"message":"feat: MainApplication 구현 (#5543)\n\n* feat: MainApplication 구현\r\n\r\n* feat: CarTest move 인자 수정","shortMessageHtmlLink":"feat: MainApplication 구현 (#5543)"}},{"before":"e535dae3814af99a218820cfc3b64ee97a32942b","after":"6ef7ceac7ab0c8deee31eb64b24c8dad495f1f8b","ref":"refs/heads/jaejeong1","pushedAt":"2024-05-06T23:55:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"javajigi","name":"박 재성","path":"/javajigi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/520500?s=80&v=4"},"commit":{"message":"Step4 (#5542)\n\n* feat: 3단계 피드백\r\n\r\n* feat: 자동차 이름 구현\r\n\r\n* feat: 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한명 이상일 수 있다.\r\n\r\n* refactor: 부생성자 호출 방식 변경, Car 클래스 리팩터링\r\n\r\n* refactor: 뷰 로직 분리\r\n\r\n* refactor: mockito 프레임워크 제거\r\n\r\n---------\r\n\r\nCo-authored-by: socar-cloud ","shortMessageHtmlLink":"Step4 (#5542)"}},{"before":"9fd75c950de9ff83d65bef2d223ade4e26958e66","after":"d1ae7807ac90e6c85022bd7812782ea65b0d6c36","ref":"refs/heads/rkaehdaos","pushedAt":"2024-04-18T05:29:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"neojjc2","name":null,"path":"/neojjc2","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68527004?s=80&v=4"},"commit":{"message":"Step4 carracing (#5541)\n\n* step1 squash\r\n\r\n* step2 squash\r\n\r\n* step3 squash\r\n\r\n* docs(README): STEP4 README.md 작성\r\n\r\n* feat(car): Move, getDistance 구현\r\n\r\n* feat(car): name 필드\r\n\r\n* feat(car): Car 구현 완료 및 정리\r\n\r\n* feat(Race): Race 생성자 및 getter 처리\r\n\r\n* feat(Race): Race runRound\r\n\r\n- 이전 study test depreacated 주석처리\r\n\r\n* feat(Input): Input 구현\r\n\r\n* feat(result): 자동차 이름과 함께 움직임 출력\r\n\r\n* feat(result): 최종 우승자 출력: 1명 이상 일 수 있음\r\n\r\n* feat(result): result 구현 완료\r\n\r\n* check: UI를 InputView, ResultView로 분리\r\n\r\n* 메서드가 15라인을 넘어가지 않도록 구현\r\n\r\n- pmd로 ncss 15line 강제화\r\n- jdk21 apply\r\n- 기존 에\r\n* 에러 정의 차이\r\n\r\n리플렉션을 사용하여 생성자를 호출하면, 생성자 내부에서 발생하는 예외는 InvocationTargetException에 감싸져서 발생합니다. 이 때문에 예외가 직접적으로 UnsupportedOperationException가 아니라 InvocationTargetException으로 포착되는 것입니다.\r\n\r\n* 최적화\r\n\r\n* Car 상수 사용 및 보완\r\n\r\n* formatting\r\n\r\n* 가독성\r\n\r\n* workflow 수정\r\n\r\n* workflow 수정\r\n\r\n* pmdtest4에 step4 넣음\r\n\r\n* workflow에 pmd summary 추가\r\n\r\n* 15라인 rule은 main 코드에만 ㅋㅋ\r\n\r\n* Extract PMD info and update step summary\r\n\r\n* test dependon pmdmain\r\n\r\n* pmd 실패여도 진행\r\n\r\n* xmllint 사용 제거\r\n\r\n* 메시지 추출 부분 수정\r\n\r\n* 일단 원복\r\n\r\n* awk로 개선된 스크립트\r\n\r\n설명\r\n파일 처리:\r\n\r\nawk를 사용하여 태그로 시작하고 태그로 끝나는 블록을 찾습니다. 이는 awk '//' 명령으로 처리합니다.\r\n파일 내부 처리:\r\n\r\nawk 스크립트는 각 파일 블록을 처리하면서 파일 이름을 추출하고, 각 위반 사항의 정보를 파싱합니다.\r\n파일 이름은 gensub() 함수를 사용하여 추출하고, 위반의 라인 번호, 메시지, URL을 추출하여 출력합니다.\r\nMarkdown 형식:\r\n\r\n추출된 정보는 콘솔에 출력되고 pmd_summary.md 파일에 Markdown 형식으로 기록됩니다.\r\n최종적으로, 이 Markdown 파일은 GitHub Actions 단계 요약에 추가됩니다.\r\n장점\r\n성능: awk는 스트림을 처리하면서 발생하는 데이터를 효율적으로 처리할 수 있으므로, 큰 XML 파일에 대해서도 성능상의 이점이 있습니다.\r\n간결성: awk를 사용하면 복잡한 grep 및 sed 조합을 하나의 명령으로 대체할 수 있어 스크립트가 더욱 간결해집니다.\r\n유지 관리: 스크립트가 간결해지므로 유지 관리가 용이해지며, 변경 사항을 적용하기 쉬워집니다.\r\n\r\n* awk로 개선된 스크립트2 - 텍스트 한정\r\n\r\n변경된 부분 설명\r\n태그 내용 처리 로직: 태그를 만나면 내용 캡처를 시작하고, 태그를 만나면 내용 캡처를 종료하며, 그 사이에 있는 모든 텍스트를 content 변수에 누적합니다.\r\n텍스트 출력: 최종적으로 각 violation의 설명이 content 변수에 저장되고, 이를 Markdown 링크의 텍스트로 사용하여 출력합니다.\r\n이 수정을 통해 PMD 요약 정보에는 각 violation의 상세 설명이 태그 사이의 텍스트로 정확히 제공됩니다. 이 방법은 XML 데이터에서 필요한 정보만을 추출하여 보다 명확하고 유용한 요약을 생성하는 데 도움이 됩니다.\r\n\r\n* message 수정\r\n\r\n* workflow-PR 생성\r\n\r\n* NCSS 5->15\r\n\r\n* NCSS 5->15\r\n\r\n* NCSS 15->5\r\n\r\n* README.md 수정\r\n\r\n* onPRTest\r\n\r\n* onPRTest -             $GITHUB_STEP_SUMMARY\r\n\r\n* onPRTest\r\n\r\n* Comment SUMMARY Report on PR body check\r\n\r\n* body-path: 'PR_summary.md'\r\n\r\n* body-path: 'PR_summary.md'\r\n\r\n* PUSH_summary.md 에 모으기\r\n\r\n* PR_summary.md 에 total count 추가\r\n\r\n* push workflow는 pr이 있으면 작동하지 않음\r\n\r\n* pr workflow type 지정\r\n\r\n* PR시에는 build task\r\n\r\n* github.event.pull_request삭제 - pr workflow에서만 true 가능\r\n\r\n* types 가독성\r\n\r\n* graalvm 적용\r\n\r\n* 정리\r\n\r\n* 언어 정리\r\n\r\n* pmd pmdtest는 전부 제외, pmdmin은 step4만\r\n\r\n* 메서드라인은 15라인\r\n\r\n* 문제가 없을시 pmd report 요약 액션 에러 수정\r\n\r\n* push workflow - 문제가 없을시 pmd report 요약 액션 에러 수정\r\n\r\n* PR 멈추기\r\n\r\n* push test\r\n\r\n* push test2\r\n\r\n* error 수정: branches-ignore: ['*']\r\n\r\n* total_violations 출력 수정\r\n\r\n* 극단적 test\r\n\r\n* 극단적 test2\r\n\r\n* 극단적 test3\r\n\r\n* PMD 리포트 요약 복원\r\n\r\n* grep 명령 실패 허용\r\n\r\n* jacoco summary 지워지는 거 방지\r\n\r\n* PR workflow 활성화\r\n\r\n---------\r\n\r\nCo-authored-by: GeunChang Ahn <13996827+rkaehdaos@users.noreply.github.com>\r\n\r\n* Step4 - 단일 책임원칙 확인\r\n\r\n* psvm 클래스 rename\r\n\r\n* 패키지 이동\r\n\r\n* 메서드명 변경\r\n\r\n* CarRacingRunner 생성\r\n\r\n* 단일책임 원칙\r\n\r\n---------\r\n\r\nCo-authored-by: GeunChang Ahn <13996827+rkaehdaos@users.noreply.github.com>\r\n\r\n* Merge remote-tracking branch 'origin/step4_carracing' into step4_carr… (#3)\r\n\r\nconflict 해결 ㅠ\r\n\r\n* conflict 해결 및 전략 패턴 적용 (#4)\r\n\r\n* conflict ㅎㅐ결\r\n\r\n* RandomMovingStrategy 작성\r\n\r\n* stragegy 패턴 적용\r\n\r\n* 포맷팅","shortMessageHtmlLink":"Step4 carracing (#5541)"}},{"before":"1bf1b760c646eeeefb906ff64bf237806dce3848","after":"9fd75c950de9ff83d65bef2d223ade4e26958e66","ref":"refs/heads/rkaehdaos","pushedAt":"2024-04-16T01:07:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"neojjc2","name":null,"path":"/neojjc2","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68527004?s=80&v=4"},"commit":{"message":"Step3 PR request (#5539)\n\n* [step3] ready\r\n\r\n* [step3] 자동차 대수와 시도할 회수가 정확하게 입력된다 - 테스트 성공\r\n\r\n* [step3] 변수명 수정\r\n\r\n* [step3] String.format대신 printf 사용\r\n\r\n* [step3] OOP설계(Car)\r\n\r\n- Car는 전진한 거리 distance를 가진다.\r\n- Car는 random값이 4 이상이면 거리증가\r\n\r\n* [step3] OOP설계(Race): Race에는 n대의 차가 참여\r\n\r\n* [step3] OOP설계(Race): 개선\r\n\r\n- 초기화 streawm 이용\r\n- 0 이하시 에러\r\n- runRound 추가\r\n\r\n* [step3] 객체를 이용한 프로그램 실행\r\n\r\n* [step3] 리팩토링 - car 처음 distance 초기값 0->1\r\n\r\n- 아예 차가 나타나지 않는 현상 방지\r\n\r\n* [step3] CarMoveTest 추가\r\n\r\n* [step3] CarMoveTest 개선\r\n\r\n* [step3] RaceRoundTest: race가 1번이라도 열리면 100대중 1개는 전진 한다\r\n\r\n* [step3] MainOutputTest (미완성)\r\n\r\n* [step3] 테스트 성공\r\n\r\n* [test] 테스트 성공\r\n\r\n* [test] 필요 없는 부분 정리\r\n\r\n* [step3] 사용하지 않는provideOutput 메서드 삭제 -\r\n\r\n* [step3] resultView 생성\r\n\r\n* [step3] 워닝 수정\r\n\r\n* [step3] runraces로 운영 분리\r\n\r\n* [step3] InputView 추가\r\n\r\n* [step3] InputView 반영\r\n\r\n* [step3] 라이브러리 버전업+롬복 추가\r\n\r\n* [step3] 정리및 빈 LINE CHECK 추가\r\n\r\n* [step3] action 정리","shortMessageHtmlLink":"Step3 PR request (#5539)"}},{"before":"1fa7d72bd55e5d2b98ff1e9f1eedb8609c1cd609","after":"e535dae3814af99a218820cfc3b64ee97a32942b","ref":"refs/heads/jaejeong1","pushedAt":"2024-04-15T13:27:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"catsbi","name":"Catsbi","path":"/catsbi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43158866?s=80&v=4"},"commit":{"message":"Step3 racingcar (#5406)\n\n* refactor: hasNegative method refactoring\r\n\r\n* feat: 사용자는 몇 대의 자동차로 몇 번의 이동을 할 것인지를 입력할 수 있다.\r\n\r\n* feat: 주어진 횟수 동안 n대의 자동차는 전진 또는 멈출 수 있다. 전진하는 조건은 0에서 9 사이에서 random 값을 구한 후 random 값이 4이상일 경우이다.\r\n\r\n* refactor : 메서드 분리\r\n\r\n* refactor : 요구사항 재정의\r\n\r\n* feat : 자동차 단위테스트\r\n\r\n* feat : 피드백 반영","shortMessageHtmlLink":"Step3 racingcar (#5406)"}},{"before":"65b1a981ff78bde3bc2736bdcd2266caab28f1b2","after":"64c4e3c3fc2e26820667c7f7d8c9ef1f3eb89091","ref":"refs/heads/jjihye-hyun","pushedAt":"2024-04-09T08:26:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seondongpyo","name":"Seondong Pyo","path":"/seondongpyo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/64854054?s=80&v=4"},"commit":{"message":"Step5 리뷰 요청 (#5529)\n\n* refactor: domian 패키지 생성및 클래스 이동\r\n\r\n* refactor: main 클래스 패키지 이동\r\n\r\n* refacot: CarLocation 생성 시 0으로 초기화\r\n\r\n* refctor: 상수 값 치환\r\n\r\n* refactor: 최대값 구하기 Math.max 함수 활용\r\n\r\n* refactor: location 출력 수정\r\n\r\n* refactor: CarRacing run times 수정\r\n\r\n* runTimes 객체 분리\r\n\r\n* refactor: 상수 컨밴션 수정\r\n\r\n* test: winner 우승자 찾기 테스트 추가\r\n\r\n* refactor: isWinner 메서드 명 변경\r\n\r\n* refactor: run 함수 수정\r\n\r\n* test: car move 테스트 추가\r\n\r\n* test: car location 테스트 추가\r\n\r\n* test: carName 테스트 추가\r\n\r\n* test: runtimes 테스트 추가","shortMessageHtmlLink":"Step5 리뷰 요청 (#5529)"}},{"before":"868d887297984bb0f5cfc5baa0dcc3a885699004","after":"2eae5a64dc878b696330c1e6f090cbc46441d73d","ref":"refs/heads/develiberta","pushedAt":"2024-04-08T03:28:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kyucumber","name":"KyuNam","path":"/kyucumber","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34656258?s=80&v=4"},"commit":{"message":"Step5 (#5537)\n\n* feat: step4 -> step5\r\n\r\n* feat: controller 분리\r\n\r\n* feat: 테스트 케이스 추가\r\n\r\n* chore: README.md 수정\r\n\r\n---------\r\n\r\nCo-authored-by: develiberta ","shortMessageHtmlLink":"Step5 (#5537)"}},{"before":"454df8ce820a5f5d632cfc0298d0c552efca7168","after":"2cbbfdd62c737700eac02665eeb0ddae5f40eac1","ref":"refs/heads/jioome","pushedAt":"2024-04-07T06:06:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"csh0034","name":"SeungHun Choi","path":"/csh0034","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/44543456?s=80&v=4"},"commit":{"message":"5단계 - 자동차 경주(리팩토링) (#5536)\n\n* fix: 리팩토링\r\n\r\n* fix: add position test\r\n\r\n* fix: refactoring\r\n\r\n* fix: remove import","shortMessageHtmlLink":"5단계 - 자동차 경주(리팩토링) (#5536)"}},{"before":"75c452a4fb18eca280c53016a2d7235528356358","after":"4c84d50342382efb17b97acbb5fdfa030eb5eb8a","ref":"refs/heads/sojournre","pushedAt":"2024-04-04T05:35:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seondongpyo","name":"Seondong Pyo","path":"/seondongpyo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/64854054?s=80&v=4"},"commit":{"message":"Step5 - 자동차 경주(리팩토링) (#5530)\n\n* feat: RacingGame main 메서드 구현\r\n\r\n* feat: 핵심 로직, UI 로직 클래스 분리\r\n\r\n* refactor: UI 로직 분리 완료\r\n\r\n* refactor: 리뷰 요청사항 반영\r\n\r\n* refactor: 리뷰 요청사항 반영중\r\n\r\n* refactor: 리뷰 요청사항 반영 완료\r\n\r\n* feat: 자동차 이름 입출력 구현\r\n\r\n* feat: 우승자 찾기 메서드 및 테스트 코드 작성 완료\r\n\r\n* feat: 우승자 찾기 메서드 리팩토링 및 우승자 출력 기능 구현\r\n\r\n* chore: assert 검증 함수 변경 및 공백 문자 제거\r\n\r\n* chore: README 구현완료 체크 업데이트\r\n\r\n* refactor: 리뷰 요청사항 반영\r\n- 생성자 호출 구조 변경\r\n- 원시값, 문자열 클래스 포장\r\n\r\n* refactor: 리뷰 요청사항 반영\r\n\r\n- 생성자 호출 구조 변경\r\n- 원시값, 문자열 클래스 포장\r\n\r\n* refactor: main 메서드 라인 줄임\r\n\r\n* chore: TODO 코멘트 삭제\r\n\r\n* refactor: Car 생성자 정리, RacingGame 도메인 생성\r\n\r\n* refactor: domain, view 패키지 분리\r\n\r\n* chore: merge 과정에서 생성된 Car 클래스 삭제\r\n\r\n* refactor: 코멘트 사항 반영\r\n\r\n- Cars 일급 콜렉션 생성\r\n- TryCount 원시값 포장","shortMessageHtmlLink":"Step5 - 자동차 경주(리팩토링) (#5530)"}},{"before":"4c9d4cec7b99f2def6962b6ff65fcbb7d58f2a52","after":"83f7aff58434e44d51350e2f418013b004167806","ref":"refs/heads/wagranungyo","pushedAt":"2024-04-03T13:36:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wooobo","name":"wooobo","path":"/wooobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12059592?s=80&v=4"},"commit":{"message":"spilt study test (#5280)\n\n* spilt study test\r\n\r\n* String, Set study test\r\n\r\n---------\r\n\r\nCo-authored-by: KyungryunLee ","shortMessageHtmlLink":"spilt study test (#5280)"}},{"before":"72a6b2cd8f8e33b461650d6a964952a436f586b4","after":"7beb2cb3edb0de70334e5cd165b30d12470dabd7","ref":"refs/heads/hbae","pushedAt":"2024-04-01T11:58:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wooobo","name":"wooobo","path":"/wooobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12059592?s=80&v=4"},"commit":{"message":"Step5 (#5526)\n\n* feat: [step3] READEME 작성(#STEP3)\r\n\r\n* feat: [step3] 테스트 코드 작성 및 자동차 움직이기 구현(#STEP3)\r\n\r\n* feat: [step3] 사용자 입력값 구현(#STEP3)\r\n\r\n* feat: [step3] 자동차 배열 생성 구현(#STEP3)\r\n\r\n* feat: [step3] 자동차 레이스 구현(#STEP3)\r\n\r\n* feat: [step3] 자동차 상태 출력 구현(#STEP3)\r\n\r\n* refactor: [step3] RacingApplication에서 Scanner 의존성 분리(#STEP3)\r\n\r\n* refactor: [step3] CarLocation 객체 및 exception 추가(#STEP3)\r\n\r\n* refactor: [step3] Car클래스 RacingCars로 맵핑(일급컬렉션)(#STEP3)\r\n\r\n* refactor: [step3] 매직 넘버 수정(#STEP3)\r\n\r\n* refactor: [step3] 인스턴스 매번 호출 이슈 수정(#STEP3)\r\n\r\n* refactor: [step3] 테스트 코드 수정 (#STEP3)\r\n\r\n* refactor: [STEP3] 카운트하는 객체 추가\r\n\r\n* refactor: [STEP3] CarLocation 불변객체로 변경\r\n\r\n* refactor: [STEP3] CarLocation 불변객체로 변경\r\n\r\n* refactor: [STEP3] 객체에게 작업 할당\r\n\r\n* refactor: [step3] 한줄의 점 하나 원칙 반영 (#STEP3)\r\n\r\n* refactor: [step3] 메서드명, 파라미터 정리 (#STEP3)\r\n\r\n* feat: [step4] README, 테스트코드 작성 (#STEP4)\r\n\r\n* feat: [step4] 자동차 우승자 로직 구현 (#STEP4)\r\n\r\n* feat: [step4] 레이스 입출력 구현 (#STEP4)\r\n\r\n* refactor: [step4] 확장 가능성을 위한 메서드 네이밍 변경 (#STEP4)\r\n\r\n* refactor: [step4] List 자료구조에서 Set 자료구조로 변경 및 리팩토링 (#STEP4)\r\n\r\n* refactor: [STEP5] 이전 리뷰 반영 및 리팩토링\r\n\r\n* refactor: [STEP5] 패키지 구조 변경\r\n\r\n* fix:[step5] 충돌해결\r\n\r\n* refactor: [STEP5] 리뷰 반영(객체 내부에서 처리하도록 메시지 전달, 객체 비교하도록 테스트 코드 수정)\r\n\r\n* refactor: [step5] 내부구현 변경\r\n\r\n* refactor: [step5] 인터페이스 주입받도록 변경\r\n\r\n---------\r\n\r\nCo-authored-by: 배현중 ","shortMessageHtmlLink":"Step5 (#5526)"}},{"before":"bbdbb27ac0aa3071c182fe6dc7b84a6aef4c27a5","after":"65b1a981ff78bde3bc2736bdcd2266caab28f1b2","ref":"refs/heads/jjihye-hyun","pushedAt":"2024-03-31T12:23:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seondongpyo","name":"Seondong Pyo","path":"/seondongpyo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/64854054?s=80&v=4"},"commit":{"message":"리뷰 요청드립니다! (Step4) (#5523)\n\n* refactor: 도메인 재설계 연습 기존 소스 삭제\r\n\r\n* doc: 구현기능 추가\r\n\r\n* feat: 자동차 이름 5자 초과 유효성 검사 기능 추가\r\n\r\n* feat: 입력 view 추가\r\n\r\n* feat: car 전진 기능 추가\r\n\r\n* feat: 자동차 이름으로 car 생성\r\n\r\n* refactor: Car 이름 부여 분리\r\n\r\n* feat: 전진 조건 및 출력 기능 추가\r\n\r\n* feat: 우승자 출력 기능 추가\r\n\r\n* refactor: String repeat()메서드 활용\r\n\r\n* refactor: IllegalArgumentException 구체적 명시\r\n\r\n* refactor: 숫자 리터럴 상수로 선언\r\n\r\n* refactor: Scanner 인스턴스 분리\r\n\r\n* refactor: name 클래스 포장\r\n\r\n* refactor: Car,Location 클래스 분리\r\n\r\n* refactor: 출력 부분 분리\r\n\r\n* refactor: cars 컬렉션 분리","shortMessageHtmlLink":"리뷰 요청드립니다! (Step4) (#5523)"}},{"before":"c7b4349c36948404ba2ce52c91993a78ed592a88","after":"1391f9542040bd685c775048937285780cf89391","ref":"refs/heads/westkitekim","pushedAt":"2024-03-30T02:57:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"catsbi","name":"Catsbi","path":"/catsbi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43158866?s=80&v=4"},"commit":{"message":"4단계 - 자동차 경주(우승자) (#5511)\n\n* style: 사용하지 않는 상수 제거\r\n상수와 인스턴스 변수 간의 개행을 하려 했으나 상수가 사용되지 않아 제거함\r\n\r\n* refactor: 비즈니스로직 반복문을 스트림으로 변경\r\n\r\n* docs: 4단계 자동차 경주(우승자) 기능 요구사항 목록 작성\r\n\r\n* docs: README 요구사항 목록으로만 구성\r\n\r\n* refactor: 전략패턴 인자값 상수화\r\n\r\n* docs: 요구사항 추가\r\n\r\n* test: CarName객체 입력 검증 테스트코드 작성\r\n\r\n* feat: CarName 도메인 객체 구현\r\n\r\n* feat: 입력부 출력 메세지 수정\r\n\r\n* docs: 구현기능 체크\r\n\r\n* style: 클래스명 변경\r\n\r\n* test: 참가자 이름 중복 테스트코드 작성\r\n\r\n* style: 사용하지 않는 코드 제거\r\n\r\n* style: 클래스명 변경에 따른 에러메세지 변경\r\n\r\n* docs: 구현목록 중복 예외케이스 추가\r\n\r\n* test: Participants 입력 검증(중복, 미입력) 테스트코드 작성\r\n\r\n* feat: 전체참가자 입력 검증로직 구현\r\n\r\n* fix: 참조 클래스 변경 - 테스트 오류 발생\r\n\r\n* feat: 도메인 Participant/Participants 객체 구현\r\n\r\n* fix: 참가자 클래스 Iterable 인터페이스 구현\r\n\r\n* fix: 테스트오류 출력메세지 수정\r\n\r\n* feat: car객체 우승자 판별 로직 추가\r\n\r\n* feat: 도메인 우승자 판별 기능 구현\r\n\r\n* feat: 도메인 DTO 참가자 객체 추가\r\n\r\n* style: 사용하지 않는 메소드 삭제\r\n\r\n* feat: 컨트롤러 파라미터 참석자 추가\r\n\r\n* feat: 변경된 RacingResult 출력부 반영 - 참석자, 최종 우승자 추가\r\n\r\n* test: 자동차 생성 테스트코드 기존로직 변경\r\n\r\n* docs: 기능구현 목록 체크\r\n\r\n* refactor: 무의미한 정적팩토리메서드 삭제\r\nParticipant 생성자 내부로 검증기능 이동\r\nParticipants 정적팩토리메서드 호출로직 수정\r\nParticipantsTest 테스트코드 호출로직 수정\r\n\r\n* refactor: 도메인 매직리터럴 예외처리 메세지 상수화\r\n\r\n* feat: 도메인 객체(Car) 우승자 판별 메소드 구현\r\n\r\n* refactor: 레이싱 도메인 수정 - 우승자 선별시 불필요한 반복진행 로직 제거\r\n\r\n* refactor: Participant 객체(Car의 이름)에 대한 책임을 Car 객체로 이동\r\n\r\n* style: 코드 정리 및 import 와일드카드 제거\r\n\r\n* refactor: 라운드 실행 메소드 접근제어자 수정\r\n\r\n* test: 경주 도메인 테스트코드 추가(경주 실행건수 테스트)\r\n\r\n* test: Car 도메인 객체 테스트코드 추가\r\n\r\n* test: 경주 도메인 - 시도횟수 테스트코드 작성\r\n\r\n* feat: 경주 도메인 시도횟수 검증로직 구현\r\n\r\n* fix: 시도횟수 검증로직 오류 수정\r\n\r\n* refactor: 경주 도메인 - 우승자 판별 로직 불필요 연산 제거로직 추가\r\ntakeWhile로 필터링","shortMessageHtmlLink":"4단계 - 자동차 경주(우승자) (#5511)"}},{"before":null,"after":"3797f0995f0699d6499f3b678f16556ef12f62be","ref":"refs/heads/javajigi-18th","pushedAt":"2024-03-29T01:05:38.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"javajigi","name":"박 재성","path":"/javajigi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/520500?s=80&v=4"},"commit":{"message":"complete 18th version","shortMessageHtmlLink":"complete 18th version"}},{"before":"456e47828d58afa180a0d3835c1675c610949221","after":"868d887297984bb0f5cfc5baa0dcc3a885699004","ref":"refs/heads/develiberta","pushedAt":"2024-03-28T01:12:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kyucumber","name":"KyuNam","path":"/kyucumber","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34656258?s=80&v=4"},"commit":{"message":"Step4 (#5426)\n\n* [step4] README.md\r\n\r\n* [step4] 자동차 경주(우승자) 진행 중 -- 단일 우승자에 대해서만 구현\r\n\r\n* chore: 결과 타이틀 추가\r\n\r\n* fix: 1차 피드백 반영\r\n\r\n---------\r\n\r\nCo-authored-by: develiberta ","shortMessageHtmlLink":"Step4 (#5426)"}},{"before":"76895938040fc9168684aafd2a95aa945972d694","after":"75c452a4fb18eca280c53016a2d7235528356358","ref":"refs/heads/sojournre","pushedAt":"2024-03-27T03:43:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seondongpyo","name":"Seondong Pyo","path":"/seondongpyo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/64854054?s=80&v=4"},"commit":{"message":"Step4-자동차 경주(우승자) (#5527)\n\n* feat: RacingGame main 메서드 구현\r\n\r\n* feat: 핵심 로직, UI 로직 클래스 분리\r\n\r\n* refactor: UI 로직 분리 완료\r\n\r\n* refactor: 리뷰 요청사항 반영\r\n\r\n* refactor: 리뷰 요청사항 반영중\r\n\r\n* refactor: 리뷰 요청사항 반영 완료\r\n\r\n* feat: 자동차 이름 입출력 구현\r\n\r\n* feat: 우승자 찾기 메서드 및 테스트 코드 작성 완료\r\n\r\n* feat: 우승자 찾기 메서드 리팩토링 및 우승자 출력 기능 구현\r\n\r\n* chore: assert 검증 함수 변경 및 공백 문자 제거\r\n\r\n* chore: README 구현완료 체크 업데이트\r\n\r\n* refactor: 리뷰 요청사항 반영\r\n- 생성자 호출 구조 변경\r\n- 원시값, 문자열 클래스 포장\r\n\r\n* refactor: 리뷰 요청사항 반영\r\n\r\n- 생성자 호출 구조 변경\r\n- 원시값, 문자열 클래스 포장\r\n\r\n* refactor: main 메서드 라인 줄임\r\n\r\n* chore: TODO 코멘트 삭제","shortMessageHtmlLink":"Step4-자동차 경주(우승자) (#5527)"}},{"before":"69f8bdbfa53b3a2b240f8f1b3eecedb6588c490b","after":"a4c4a4beba0606734b91aeb5d4c9da0861ff729e","ref":"refs/heads/gutenlee","pushedAt":"2024-03-27T02:04:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kyucumber","name":"KyuNam","path":"/kyucumber","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34656258?s=80&v=4"},"commit":{"message":"🚀 5단계 - 자동차 경주(리팩토링) (#5509)\n\n* refactor : car 메서드 이름 변경\r\n\r\n* refactor : racingCar 도메인 로직 추상화\r\n\r\n* refactor : 테스트 메서드 수정\r\n\r\n* feat : 🚀 4단계 - 자동차 경주(우승자)\r\n\r\n* fix : 피드백 반영\r\n\r\n---------\r\n\r\nCo-authored-by: 라우라(이유희) ","shortMessageHtmlLink":"🚀 5단계 - 자동차 경주(리팩토링) (#5509)"}},{"before":"652adff18c7b10a2c1fa2f90596ab169646d119a","after":"050b3e9dab5cf6d08545212825c47ae9beb1eb2c","ref":"refs/heads/bellbpng","pushedAt":"2024-03-26T08:50:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mskangg","name":"Minsu Kang","path":"/mskangg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27044096?s=80&v=4"},"commit":{"message":"4단계 자동차 경주(우승자) (#5524)\n\n* REFACTOR: 랜덤숫자 전략패턴 구현\r\n\r\n* FEAT: 테스트 코드 구현\r\n\r\n* FEAT: 자동차 경주 4단계(우승자) 구현\r\n\r\n* REFACTOR: 테스트 코드에서만 사용하는 클래스 이동\r\n\r\n* REFACTOR: CarManager 생성자 리팩토링, 자바 컨벤션에 맞도록 포맷 수정","shortMessageHtmlLink":"4단계 자동차 경주(우승자) (#5524)"}},{"before":"cb79fd355f378b6e511e017e17b783a46d7ad435","after":"2d398b26b07458457c584dc1b7c6f671724c62bf","ref":"refs/heads/hhhhhwi","pushedAt":"2024-03-25T13:48:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"nooose","name":"성준혁","path":"/nooose","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36617783?s=80&v=4"},"commit":{"message":"🚀 5단계 - 자동차 경주(리팩토링) (#5522)\n\n* refactor: Car의 이름에 대한 CarName 객체 생성\r\n\r\n* refactor: domain 패키지, view 패키지, controller 패키지 분리\r\n- domain 패키지 객체가 view 패키지 객체에 의존하지 않도록 분리\r\n\r\n* refactor: 여러 전략을 취하기 위해, 배열이 아닌 여러 개 전략을 취할 수 있는 MultipleStrategy 를 구현\r\n\r\n* test: CarName에 대한 테스트 코드 작성","shortMessageHtmlLink":"🚀 5단계 - 자동차 경주(리팩토링) (#5522)"}},{"before":"8dbec70fe1a8737c8f1f3fae06d6d96cafd3e314","after":"deca175a14c3090e1ae3f7060b418bd65a954cba","ref":"refs/heads/zhenxikim","pushedAt":"2024-03-25T07:16:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mskangg","name":"Minsu Kang","path":"/mskangg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27044096?s=80&v=4"},"commit":{"message":"Step3 (#5493)\n\n* test: 자동차 경주 테스트 코드 작성\r\n\r\n* feat: 자동차 경주 코드 개발\r\n\r\n* feat: 리뷰 반영\r\n\r\n- 책임 할당 수정 및 객체지향 원칙 반영\r\n\r\n* feat: 리뷰 반영\r\n\r\n- 책임 할당 수정 및 객체지향 원칙 반영\r\n\r\n* feat: new line 추가\r\n\r\n* feat: 리뷰 반영\r\n\r\n---------\r\n\r\nCo-authored-by: 김정희 ","shortMessageHtmlLink":"Step3 (#5493)"}},{"before":"4decc2fdebc8507de51c02460f318a5e28b9aae6","after":"1bf1b760c646eeeefb906ff64bf237806dce3848","ref":"refs/heads/rkaehdaos","pushedAt":"2024-03-25T00:13:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"neojjc2","name":null,"path":"/neojjc2","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/68527004?s=80&v=4"},"commit":{"message":"2단계 - 문자열 덧셈 계산기 (#5525)\n\n* [step2] prepare\r\n\r\n* [step2] req1-testcase-fail\r\n\r\n- 빈 문자열 또는 null 값을 입력할 경우 0을 반환해야 한다\r\n\r\n* [step2] req1-testcase-Success\r\n\r\n- 어떻게 해서든 성공!\r\n\r\n* [step2] req2-testcase-Fail\r\n\r\n* [step2] req2-testcase-Success\r\n\r\n* [step2] req3-testcase-Fail\r\n\r\n- 앞 단계의 구분자가 없는 경우도 split()을 활용가능\r\n\r\n* [step2] req3-testcase-Success\r\n\r\n- 앞 단계의 구분자가 없는 경우도 split()을 활용가능\r\n\r\n* [step2] req4-testcase-Fail\r\n\r\n- 구분자를 컴마(,) 이외에 콜론(:)을 사용할 수 있다.\r\n\r\n* [step2] req4-testcase-Success\r\n\r\n- 구분자를 컴마(,) 이외에 콜론(:)을 사용할 수 있다.\r\n\r\n* [step2] req5-testcase-Fail\r\n\r\n* [step2] req5-testcase-Success\r\n\r\n* [step2] refactoring1 - 중복 분리\r\n\r\n* [step2] req6-testcase-fail\r\n\r\n* [step2] req6-testcase-Success\r\n\r\n* [step2] refactoring - 관심사 분리\r\n\r\n* [step2] refactoring - 조건 변경\r\n\r\n- 양수가 아닌 모든 케이스에 대해(음수, 정수가 아닌 경우) 예외\r\n\r\n* [step2] refactoring - 명확한 예외 메세지\r\n\r\n- 숫자 변환에 실패할 경우에 대한 예외 처리를 추가\r\n\r\n* [step2] refactoring - 0 return 조건 분리\r\n\r\n* [step2] refactoring - 관심사 분리\r\n\r\n* [step2] refactoring - 정규식 조건 변경 등\r\n\r\n- 정규식 조건 변경\r\n- 커스텀 구분자 패턴 변수로 한 번만 컴파일\r\n- input명 통일","shortMessageHtmlLink":"2단계 - 문자열 덧셈 계산기 (#5525)"}},{"before":"06c1690af0a00f2deb59765e9f057113152f42ee","after":"482177b6e0f279d0145f5dc005c61d5e4b138e58","ref":"refs/heads/sunheejo","pushedAt":"2024-03-24T23:51:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"testrace","name":null,"path":"/testrace","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8064743?s=80&v=4"},"commit":{"message":"[5단계-자동차 경주(리팩터링)] (#5520)\n\n* refactor: [5단계-자동차 경주(리팩터링)] 코드리뷰에 맞춰 수정\r\n\r\n* docs: [5단계-자동차 경주(리팩터링)] README.md 수정\r\n\r\n* chore: [5단계-자동차 경주(리팩터링)] 다른 단계의 패키지 내용 삭제\r\n\r\n* docs: [5단계-자동차 경주(리팩터링)] 오타 수정\r\n\r\n* refactor: [5단계-자동차 경주(리팩터링)] (1)MVC 모델에 맞춰 패키지 분리 (2)CarGroup에서 입력받은 이름을 구분자 컴마에 맞춰 나누던 책임을 InputView로 옮김\r\n\r\n---------\r\n\r\nCo-authored-by: vieworksjosunhee@gmail.com ","shortMessageHtmlLink":"[5단계-자동차 경주(리팩터링)] (#5520)"}},{"before":"9809dcd8f73464827e4b558c02745226070c9cd2","after":"b1c2c357dd52e9ab00d8c0ebbfd1d6cfcfb9431f","ref":"refs/heads/kwanik-kor","pushedAt":"2024-03-24T23:46:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seondongpyo","name":"Seondong Pyo","path":"/seondongpyo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/64854054?s=80&v=4"},"commit":{"message":"[5단계 - 자동차 경주(리팩토링)] 실습 구현을 마쳤습니다. (#5501)\n\n* feat: 리팩토링 진행을 위해 step4 패키지 구조 동일하게 복사\r\n\r\n* test: 차량 움직이지 않을 경우에 대한 테스트코드 추가\r\n\r\n* refactor: 움직임 결과 객체 패키지 변경\r\n\r\n* refactor: 움직임 결과 테스트코드 패키지 구조 변경\r\n\r\n* test: moveAll 테스트 코드 추가\r\n\r\n* refactor: 리뷰 내용 반영\r\n\r\n- 객체내 필드 3개 이하로 구성\r\n- LinkedList.getLast() 활용하도록 수정\r\n\r\n* refactor: tryCount 원시값 포장 처리\r\n\r\n* refactor: Car, Cars가 움직임 결과 바로 반환하도록 처리\r\n\r\n* refactor: CarName 원자값 포장 처리\r\n\r\n* test: 자동차 이름 테스트 코드 추가\r\n\r\n* refactor: Racing tryCount 원시값 포장 처리\r\n\r\n* refactor: RoundResults의 승자 이름 반환 메서드 추가","shortMessageHtmlLink":"[5단계 - 자동차 경주(리팩토링)] 실습 구현을 마쳤습니다. (#5501)"}},{"before":"e5306c9c8a21723b3af1580dce2c221f5b946b1e","after":"454df8ce820a5f5d632cfc0298d0c552efca7168","ref":"refs/heads/jioome","pushedAt":"2024-03-24T15:21:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"csh0034","name":"SeungHun Choi","path":"/csh0034","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/44543456?s=80&v=4"},"commit":{"message":"🚀 4단계 - 자동차 경주(우승자) (#5518)\n\n* feat: StringTest\r\n\r\n* feat: SetTest\r\n\r\n* fix: string index exceptioin\r\n\r\n* fix: modify string test\r\n\r\n* step2: 문자열 덧셈 계산기\r\n\r\n* fix: 계산기 피드백 적용\r\n\r\n* fix: calculator feedback\r\n\r\n* feat: racing car\r\n\r\n* fix: 비지니스 로직 넘버는 상수로 표현\r\n\r\n* fix: 자동차 경주 리팩토링\r\n\r\n* docs: todo list\r\n\r\n* Revert \"docs: todo list\"\r\n\r\nThis reverts commit bcdf2133c794ab77caf397c19a52ab15ffbfce26.\r\n\r\n* docs: todo list\r\n\r\n* fix: 자동차에 이름 부여\r\n\r\n* feat: 자동차 경주 우승자 구하기\r\n\r\n* fix: gitkeep삭제\r\n\r\n* fix: 자동차 경주 리팩토링","shortMessageHtmlLink":"🚀 4단계 - 자동차 경주(우승자) (#5518)"}},{"before":"6365edbc66b6a57b8fe8446724417cd9a9f0e007","after":"72a6b2cd8f8e33b461650d6a964952a436f586b4","ref":"refs/heads/hbae","pushedAt":"2024-03-24T15:20:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"wooobo","name":"wooobo","path":"/wooobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12059592?s=80&v=4"},"commit":{"message":"Step4 (#5517)\n\n* feat: [step3] READEME 작성(#STEP3)\r\n\r\n* feat: [step3] 테스트 코드 작성 및 자동차 움직이기 구현(#STEP3)\r\n\r\n* feat: [step3] 사용자 입력값 구현(#STEP3)\r\n\r\n* feat: [step3] 자동차 배열 생성 구현(#STEP3)\r\n\r\n* feat: [step3] 자동차 레이스 구현(#STEP3)\r\n\r\n* feat: [step3] 자동차 상태 출력 구현(#STEP3)\r\n\r\n* refactor: [step3] RacingApplication에서 Scanner 의존성 분리(#STEP3)\r\n\r\n* refactor: [step3] CarLocation 객체 및 exception 추가(#STEP3)\r\n\r\n* refactor: [step3] Car클래스 RacingCars로 맵핑(일급컬렉션)(#STEP3)\r\n\r\n* refactor: [step3] 매직 넘버 수정(#STEP3)\r\n\r\n* refactor: [step3] 인스턴스 매번 호출 이슈 수정(#STEP3)\r\n\r\n* refactor: [step3] 테스트 코드 수정 (#STEP3)\r\n\r\n* refactor: [STEP3] 카운트하는 객체 추가\r\n\r\n* refactor: [STEP3] CarLocation 불변객체로 변경\r\n\r\n* refactor: [STEP3] CarLocation 불변객체로 변경\r\n\r\n* refactor: [STEP3] 객체에게 작업 할당\r\n\r\n* refactor: [step3] 한줄의 점 하나 원칙 반영 (#STEP3)\r\n\r\n* refactor: [step3] 메서드명, 파라미터 정리 (#STEP3)\r\n\r\n* feat: [step4] README, 테스트코드 작성 (#STEP4)\r\n\r\n* feat: [step4] 자동차 우승자 로직 구현 (#STEP4)\r\n\r\n* feat: [step4] 레이스 입출력 구현 (#STEP4)\r\n\r\n* refactor: [step4] 확장 가능성을 위한 메서드 네이밍 변경 (#STEP4)\r\n\r\n* refactor: [step4] List 자료구조에서 Set 자료구조로 변경 및 리팩토링 (#STEP4)\r\n\r\n---------\r\n\r\nCo-authored-by: 배현중 ","shortMessageHtmlLink":"Step4 (#5517)"}},{"before":"0ce6474895bca98e6f096442033304fa6fde18a7","after":"45883a61cf313f302a340c8a970e451a83cb540d","ref":"refs/heads/ljg294","pushedAt":"2024-03-24T13:22:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ksy90101","name":"Seyun(Marco) / 김세윤","path":"/ksy90101","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/53366407?s=80&v=4"},"commit":{"message":"refactored code based on feed back from step4 (#5519)","shortMessageHtmlLink":"refactored code based on feed back from step4 (#5519)"}},{"before":"000dd5cd382d42cc94021e9db47afa7b80e6e399","after":"4decc2fdebc8507de51c02460f318a5e28b9aae6","ref":"refs/heads/rkaehdaos","pushedAt":"2024-03-24T12:01:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"javajigi","name":"박 재성","path":"/javajigi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/520500?s=80&v=4"},"commit":{"message":"🚀 1단계 - 학습 테스트 실습 PR (#5521)\n\n* step1 - String 클래스에 대한 학습 테스트\r\n\r\n* step1 - Set Collection에 대한 학습 테스트\r\n\r\n* step1 - assertj\r\n\r\n---------\r\n\r\nCo-authored-by: Kai Ahn ","shortMessageHtmlLink":"🚀 1단계 - 학습 테스트 실습 PR (#5521)"}},{"before":"39c8ade466bcc65ecdfd8214636433d14dd0a259","after":"de966c440c567c3dddc9cf26d9bcecca4a858215","ref":"refs/heads/eldertree777","pushedAt":"2024-03-24T10:24:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"catsbi","name":"Catsbi","path":"/catsbi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43158866?s=80&v=4"},"commit":{"message":"5단계 - 자동차 경주(리팩토링) (#5513)\n\n* [refactor] NumberFormatException 발생 방지\r\n\r\n* [refactor] rename PackageName\r\n\r\n* [refactor] enum 적용\r\n\r\n* [style] reformat all package\r\n\r\n* [refactor] 테스트용 클래스 테스트 패키지 하위로 이동\r\n\r\n* [refactor] 테스트룔 객체 변수에 final 적용\r\n\r\n* [refactor] 제네릭 타입 추론\r\n\r\n* [refactor] 서비스계층을 stateless 하도록 수정\r\n\r\n* [refactor] Collection 객체는 초기화 해주어 NPE 으로부터 보호\r\n\r\n* [refactor]\r\nRandom -> ThreadLocalRandom 변경으로 멀티쓰레딩 환경에서 경합시 발생하는 비용을 줄여 성능향상\r\n\r\n* [refactor]\r\n- Controller, UI에 테스트가 필요한 기능 제외\r\n- Service에 UI로직을 분리하고자 Record 클래스 생성\r\n\r\n* [style] reforamt package\r\n\r\n* [docs] step4 기능 명세\r\n\r\n* [style] package rename\r\n\r\n* [docs] 규칙 추가\r\n\r\n* [feat]\r\n- 각 자동차에 이름을 부여할 수 있다.\r\n- 자동차는 자신의 이름을 반환할 수 있다.\r\n\r\n* [feat] 5글자 넘어가는 차량의 이름 지정시 예외 발생\r\n\r\n* [feat] 입력한 자동차 이름은 쉼표(,)를 기준으로 구분한다.\r\n\r\n* [style] reformat package\r\n\r\n* [feat] 우승한 차량을 반환한다.\r\n\r\n* [feat] 우승한 차량은 여러대 일 수 있다.\r\n\r\n* [refactor] 우승자 차량들 반환시 for -> stream 사용하여 indent 및 else 제거\r\n\r\n* [feat] UI 구현\r\n\r\n* [style] reformat package\r\n\r\n* [style] 인스턴스 변수와 상수간 개행으로 구분\r\n\r\n* [refactor] 매직 넘버 상수 분리\r\n\r\n* [refactor] 불필요한 분리 제거\r\n\r\n* [refactor] stream 적용하여 코드 간결화\r\n\r\n* [refactor] Carmanager 내부 변수인 Car 리스트를 그대로 반환하는 경우 외부에서 의도치 않은 수정이 발생하는 경우 방지\r\n\r\n* [refactor] 기본 생성자 호출시 NPE 방지\r\n\r\n* [refactor] 테스트 수정\r\n\r\n* [refactor] 불필요한 메서드 삭제\r\n\r\n* [refactor] Record 삭제하므로 UI와 Service를 분리 Controller는 값을 전달하는 중계 역할\r\n\r\n* [refactor] 원시값, 원자값 포장\r\n\r\n* [style] 개행\r\n\r\n* [test] Position Test 추가\r\n\r\n* [refactor] 유효성 검사 일급객체에서 진행\r\n\r\n* [refactor] CarsManager의 cars 변수 상수 지정\r\n\r\n* [refactor] PositionCache 생성\r\n\r\n* [refactor] PositionCache 적용\r\n\r\n* [refactor] 모호한 메서드명 변경\r\n\r\n* [refactor] 모호한 메서드명 적용\r\n\r\n* [refactor] 반복되는 System.out 대신 StringBuilder 적용\r\n\r\n* [refactor] 컬렉션 객체 인스턴스 생성대신 구현된 생성자 호출\r\n\r\n* [refactor] 메서드 레퍼런스 추가 적용\r\n\r\n* [refactor] 차량의 가장 멀리 나간것 확인시 max() 값이 null 인경우 예외 처리 추가\r\n\r\n* [refactor] 컨트롤러와 비즈니스 로직 분리\r\n\r\n* [test] Position Test 수정\r\n\r\n* [refactor] 불필요한 메서드와 테스트 제거\r\n\r\n* [refactor] 불필요한 메서드 제거\r\n\r\n* [refactor] RacingResultTest, Test 추가\r\n\r\n* [refactor] Position 리팩터링\r\n\r\n* [refactor] CarsHistoryTest 추가","shortMessageHtmlLink":"5단계 - 자동차 경주(리팩토링) (#5513)"}},{"before":"6d0630be0b13b1438992202d7865c552321357ae","after":"8dbec70fe1a8737c8f1f3fae06d6d96cafd3e314","ref":"refs/heads/zhenxikim","pushedAt":"2024-03-24T08:32:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mskangg","name":"Minsu Kang","path":"/mskangg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/27044096?s=80&v=4"},"commit":{"message":"feat: 문자열 계산기 요구사항 구현 (#5379)\n\n* feat: 문자열 계산기 요구사항 구현\r\n\r\n* feat: 리뷰 반영\r\n\r\n---------\r\n\r\nCo-authored-by: 김정희 ","shortMessageHtmlLink":"feat: 문자열 계산기 요구사항 구현 (#5379)"}},{"before":null,"after":"000dd5cd382d42cc94021e9db47afa7b80e6e399","ref":"refs/heads/rkaehdaos","pushedAt":"2024-03-24T07:47:08.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"javajigi","name":"박 재성","path":"/javajigi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/520500?s=80&v=4"},"commit":{"message":"chore: upgrade java8 -> java11, gradle, junit version","shortMessageHtmlLink":"chore: upgrade java8 -> java11, gradle, junit version"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAERAV6rAA","startCursor":null,"endCursor":null}},"title":"Activity · next-step/java-racingcar"}