240503
오늘의 학습
● 1. 자바 변수, 클래스, 메서드 네이밍
● 2. 과제 한번 더 풀면서 복습하기( 다형성 및 예외 )
과제 피드백(개선 사항)
# 문제점 및 해결
1. 변수 네이밍의 문제
while문을 통해 반복을 진행하고 빠져나가는 조건으로 변수하나를 선언을 했지만 변수명이 직관적이지 못한점 수정
2. 쓸때없는 구문 제거
if문의 쓸때없는 else문 제거 if문으로 끝나는 경우 else가 필요없는 경우 제외하는 것이 오히려 보기 좋다.
3. 메서드의 분리를 통해 가독성 + 클린코드 실천
하나의 메서드의 하나의 기능만을 클린코드를 목표로 과제를 수정하였다. 훨씬 가독성이 좋아졌다.
밑의 코드에서 두개의 메서드가 기존에는 while문 안에 전부다 들어가있었다. 지금은 두개의 메서드로 분리시켜서
가독성이 좋아진걸 볼 수 있다.
4. 주석 개선
기존의 수정전 상황에선 주석이 거의없었다. 주석이 중요한지 몰랐지만 피드백을 받고난 후 주석의 중요성을 깨닫고
주석을 개선했다. 주석은 혼자 하면 몰라도 앞으로의 협업에서 중요한 부분이다. ( 배려 )
import java.util.ArrayList;
import java.util.Scanner;
public class App {
public static void main(String[] args) {
ArithmeticCalculator arithmeticCalculator = new ArithmeticCalculator(new ArrayList<>());
CircleCalculator circleCalculator = new CircleCalculator(new ArrayList<>());
Scanner sc = new Scanner(System.in);
// 개선사항 : turnOnOff => resumable ( 변수 네이밍 수정 )
boolean resumable = true;
while(resumable) {
System.out.println("1. 사칙연산 하기");
System.out.println("2. 원의넓이 구하기");
String check = sc.nextLine();
// 개선사항 : 메서드로 분리해서 조건문 실행 가독성 상승
if(check.equals("1")) {
resumable = arithmeticCalculate(arithmeticCalculator, circleCalculator, sc);
} else if(check.equals("2")) {
resumable = circleCalculate(circleCalculator, sc);
} else {
System.out.println("잘못 입력했습니다. 다시 선택해주세요.");
}
}
}
/**
* 사칙연산을 해주는 메서드
* @param a : ArithmeticCalculator()
* @param c : CircleCalculator()
* @param sc : Scanner()
* @return : boolean => false : main 반복 종료
*/
public static boolean arithmeticCalculate(ArithmeticCalculator a, CircleCalculator c, Scanner sc) {
System.out.print("첫 번째 숫자를 입력하세요:");
int num1 = sc.nextInt();
System.out.print("두 번째 숫자를 입력하세요:");
int num2 = sc.nextInt();
System.out.print("사칙연산 기호를 입력하세요: ");
char operator = sc.next().charAt(0);
sc.nextLine();
try {
// 계산된 값 setter주입 메서드 안에서 직접 add메서드 호출 후 주입.
a.setList(c.calculate(operator, num1, num2));
} catch(CalculaotrException e) {
System.out.println(e.getMessage());
}
System.out.println(a.getList());
System.out.println("가장 먼저 저장된 연산 결과를 삭제하시겠습니까? (remove 입력 시 삭제)");
if(sc.nextLine().equals("remove")){
a.removeResult();
}
System.out.println(a.getList());
System.out.println("더 계산하시겠습니까? (exit 입력 시 종료)");
return !sc.nextLine().equals("exit");
}
/**
* 반지름의 넓이 구해주는 메서드
* @param c : CircleCalculator()
* @param sc : Scanner()
* @return : boolean => false : main 반복 종료
*/
public static boolean circleCalculate(CircleCalculator c, Scanner sc) {
System.out.println("반지름을 입력해주세요.");
int radius = Integer.parseInt(sc.nextLine());
c.setCircle(c.calculateCircleArea(radius));
System.out.println("현재 원의 넓이 결과 : " + c.calculateCircleArea(radius));
System.out.println("원의 넓이 결과 전체조회 : " + c.getCircle());
System.out.println("더 계산하시겠습니까? (exit 입력 시 종료)");
return !sc.nextLine().equals("exit");
}
}
# 오늘의 회고
과제 수정 + 영상보며 배우다가 시간이 훅 지나갔다. 튜터님의 조언을 통해 공부할 것 이 추가 되었다.
클래스 설계 및 다이어그램을 만드는 연습을 틈틈히 병행 할 예정이다.
공부 방향성
1순위 : 자바 클래스 설계 및 다이어그램 설계
2순위 : 프로젝트
3순위 : 알고리즘
4순위 : 웹 및 cs지식
'내일배움캠프 Spring 5기' 카테고리의 다른 글
내일배움캠프 17일차 TIL - 함수형 인터페이스, 익명 클래스 (0) | 2024.05.09 |
---|---|
내일배움캠프 16일차 TIL - 개인 공부 (1) | 2024.05.07 |
내일배움캠프 14일차 TIL - 웹(Stateless, Stateful) (0) | 2024.05.02 |
내일배움캠프 13일차 TIL - 확장&상속(Extends) (1) | 2024.05.01 |
내일배움캠프 12일차 TIL - 객체 배열(ObjectArray) (0) | 2024.04.30 |