우테코 3주차 로또 게임 피드백을 토대로 리팩터링을 진행했다. GETTER 대신 메시지를 던져주게 바꿀 것 당첨로또는 로또 상속받고 보너스 번호 따로 저장 비즈니스 로직과 UI 로직 분리(toString) Rank Enum 적용 당첨 수익금을 계산할 때도 Rank Enum을 적용해 불필요한 코드가 많이 삭제됐다. Lotto Enum 도 getter 대신 isRangeIn 으로 메시지 던지기 느낀 점 Enum 클래스 사용 Enum 클래스 및 일급컬렉션으로 새로운 자료구조를 만들어 사용하는 것은 불필요한 코드를 많이 삭제를 할 수 도있고 가독성부분에서도 많은 도움이 되는 것 같다. getter 사용 지양 아직도 습관적으로 Alt+Insert로 getter를 만드는게 습관이 됐지만 이번 리팩터링을 계기로 ge..
우테코 프리코스가 끝나고 그동안 배운 걸 정리하기 위해 글을 쓴다. 1주차 요구사항 준수할 것 커밋 메시지 의미있게 작성할 것 이름을 통해 의도를 들어낼 것 2주차 README.md 상세히 작성 기능목록 재검토, 업데이트 값을 하드코딩 하지 않기 3주차 메서드가 길어지면 분리를 고민할 것 발생할 수 있는 모든 예외상항을 고민할 것 비즈니스 로직과 UI로직을 분리할 것 public class Lotto { private List numbers; // 로또 숫자가 포함되어 있는지 확인하는 비즈니스 로직 public boolean contains(int number) { ... } // UI 로직 private void print() { ... } } 현재 객체의 상태를 보기위한 로그 메시지 성격이 강하다면 ..
예시로 사용할 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42746 숫자를 문자로 바꿔서 값을 비교해서 내림차순으로 바꿔줘야하는 문제이다. Comparable 사용 import java.util.*; class Solution { public String solution(int[] numbers) { String answer = ""; List list = new ArrayList(); for(int i=0;i
ArrayList, List? 평소에 ArrayList list = new ArrayList();, List list = new ArrayList(); 상관없이 썼는데 new로 만들 인스턴스와 상관없이 참조변수는 상위객체를 사용 하는 것이 좋다. 이유는 List로 참조변수로 만들어두면 ArrayList 인스턴스를 사용하다 LinkedList 인스턴스로 바꿔도 참조변수의 수정이 필요없는 것 같은 구현상의 유연성을 제공한다. List는 인터페이스이고 ArrayList 클래스이다. List.remove, ArrayList.remove, LinkedList.remove List.remove : Object 값을 넣으면 해당 객체를 삭제하고 삭제했으면 true, 삭제 못했으면 false를 반환한다(삭제와 cont..
StringTokenizer Class split은 배열로 분리된 문자열을 반환하지만 StringTokenizer 클래스는 자체저긍로 분리된 문자열 처리 자체적으로 가지는 분리된 문자열을 '토큰'이라고 부름 매개변수로 문자열만 받으면 공백을 기준으로 분리 StringTokenizer(String str, String delim) delim기준으로 분리 String 버젼 iterator ? 같은 느낌 메서드 설명 int countTokens() 추출하지않고 남아있는 토큰 수 반환 boolena hasMoreElements() 커서 다음 토큰 있는지 판단 boolean hasMoreTokens() 커서 다음 토큰 있는지 판단 Object nextElement() 커서 다음토큰 object로 반환 String..
박싱과 언박싱 Wrapper 클래스 기본 데이터 타입 Booelan boolean Byte byte Character char Double double Float flot Integer int Long long Short short 기본 -> 클래스 Wrapper.valueOf(changetype c) 오토박싱 JDK 1.5부터 자바 컴파일러가 박싱, 언박싱이 필요할 때 지원 문자열변환 Wrapper.parseData(String s)
해시 코드 public int hashCode() 인스턴스 생성시 만들어지는 일련번호 클래스 정보 public final Class getClass() 인스턴스의 정보를 가지는 Class 객체 생성후 반환 문자열로 표현 public String toString() getClass().getName() + "@" Integer.toHexString(hashCode()) 같은지 비교 public boolean equlas(Object obj) 해시코드 비교해서 같은지 비교