오늘 공부할 것

최지혜·2022년 11월 4일
0

java

목록 보기
12/33

참조 호출
커밋메시지
기능단위로 쪼개기
TDD
parse 파씽
제네릭

함수 네이밍

  • 생각할 것: 무슨 작업, 어떻게 사용

예.
1. 무슨 작업 - color에 맞는 piece들을 가져온다.
2. 어떻게 사용 - 체스판에서 흑색(or 백색)의 piece들을 가져와서 점수를 계산.
public List<Piece> findPiecesByColor(Color color){}

  • 매서드 이름은 동사!
    tip) 다른 타입으로 전환하는 메서드나 빌더 패턴을 구현한 클래스의 메서드에는 전치사를 쓸 수 있다.

  • JUnit 테스트 메소드 이름에 언더스코어()가 표시되어 이름의 논리 컴포넌트를 구분하고 각 컴포넌트는 lowerCamelCase로 작성
    : MethodName_StateUnderTest_ExpectedBehavior (메서드명
    테스트상태_기대행위)

  • 자주 쓰이는 네이밍

  1. get, set
  2. init : 객체 초기화
  3. is/has/can (boolean값 리턴) : 맞는지, 가졌는지, 할 수 있는지
  4. creat : 새로운 객체 만든 후 리턴
  5. find : 데이터 찾음
  6. to : 객체를 다른 형태의 객체로 변환
  7. A By B : B를 기준으로 A를 하겠다

get과 set

  • setter : 개발자의 실수가 발생할 수 있다.

단점 (객체지향적인 코드작성에 가장 큰 적)
1. 하는 일이 단순하고, 객체 생성 시점에 필요한 모든 값들을 주입하지 않음.
2. public 으로 공개해놓은 set 메서드는 코드 다른 부분에서 언제 호출되어 값이 바뀔지 알기 힘들다.)

if 문으로만 만들기

return 사용하면 됨!

예1.

if (condition1) {
  foo1();
  return;
}
if (condition2) {
  foo2();
  return;
}
foo3();

예2.

1. if else

if (condition1) {
  foo1();
  if (condition2) {
    foo2();
  } else {
    foo3();
  }
} else {
  foo4();
}

2. only if

if (!condition1) {
  foo4();
  return;
}
foo1();
if (condition2) {
  foo2();
  return;
}
foo3();

예3.

1. 반환값을 만들고 if문 또는 if else를 사용하는 경우

returnVal = null;
if (bar()) {
  returnVal = baz();
}
return returnVal;

2. 조건이 안맞으면 바로 리턴하는 경우

if (!bar()) {
  return null;
}
return baz();

-> 2번이 더 좋음. bar() 조건 안 맞으면 빨리 리턴!

예외

try {
plan = c.serchPlan(date);
} catch ( ~Exception e) {
System.err.println("오류가 발생했습니다.");
e.printStackTrace();
}
System.out.println(plan);

switch문에서 break
boolean isLoop = true;
while (true) {
String cmd = scanner.next();
switch(cmd) {
case " ":
cmd~();
break;
case " ":
isLoop = false;
break;
}

}

public Date getDate() {
	return planDate;
}

public void registerPlan(String strDate, String plan) {
	PlanItem p = new PalnItem(strDate, plan);
    planMap.put(p.getDate(), p}
public static Date getDatefromString(String strDate) {
	Date date = null;
    try {
    	date = new SimpleDateFormat("yyyy-MM-dd").parse(dtrDate);
    }	catch (ParseException e) {
    	e.printStackTrace();
    }
    return date;

인터페이스

자체로 객체 생성 할 수 없다
{} 괄호 사용할 수 없다.
반드시 자식 클래스와 만나서 implements 해줘야 함!
(구현 클래스는 부모가 가진 메서드 다 가져야 함.)
부모가 자식을 통제할 수 있다!

메인메소드에서 객체 만들어줌!
RemoCon r = newTV();
r.chUP();

r=new Radio();
r.chUP();

인터페이스에는 final static 이 생략된 상수를 둘 수 있다.

static

static을 붙여주면 객체 없이 사용가능하다.
원래는
RemoCon r = new RemoCon(); 있어야 하지만

public static final int MAXCH = 100;
처럼 static 있으면
RemoCon.MAXCH 로 바로 사용 가능!
(변수는 수정가능해도 상수는 수정 불가능!)
인터페이스에서는 public int MAXCH = 100; 해도
final static 이 생략되어 설정되어 있음.

검색은 보통 해쉬테이블, 해쉬맵 사용.

profile
매일 성장하는 개발자

0개의 댓글