PIYUJIN / Exercise-Memo-Program

This is Exercise Memo Program that can record exercise information.
0 stars 0 forks source link

Framework #3

Open PIYUJIN opened 10 months ago

PIYUJIN commented 10 months ago

enum class 활용하여 program state별 코드 관리


class Exercise {
    // 초기 상태 설정
    var programState = ProgramState.PROGRAM_STATE_READ_FILE
    fun running() {
        while (true) {
            // 프로그램 상태에 따른 분기
            when (programState) {
                // read file data
                ProgramState.PROGRAM_STATE_READ_FILE -> {
                    method()
                    programState = ProgramState.PROGRAM_STATE_INPUT_MENU_NUMBER
                }
                // input menu number
                ProgramState.PROGRAM_STATE_INPUT_MENU_NUMBER -> {
                    method()
                    programState = ProgramState.PROGRAM_STATE_INPUT_MENU_NUMBER
                }
                // menu 1 : 운동 기록
                ProgramState.PROGRAM_STATE_INPUT_EXERCISE_INFO -> {
                    method()
                    programState = ProgramState.PROGRAM_STATE_INPUT_MENU_NUMBER
                }
                // menu 2 : 날짜별 운동 기록 출력
                ProgramState.PROGRAM_STATE_PRINT_EXERCISE_INFO -> {
                    method()
                    programState = ProgramState.PROGRAM_STATE_INPUT_MENU_NUMBER
                }
                // 끝날때 운동 기록 file에 저장
                ProgramState.PROGRAM_SATAE_WRITE_FILE -> {
                    method()
                }
            }
        }
    }
}

// program state class
enum class ProgramState {
    PROGRAM_STATE_INPUT_MENU_NUMBER, 
    PROGRAM_STATE_INPUT_EXERCISE_INFO, 
    PROGRAM_STATE_PRINT_EXERCISE_INFO, 
    PROGRAM_STATE_READ_FILE, 
    PROGRAM_SATAE_WRITE_FILE
}
PIYUJIN commented 10 months ago

유지보수를 용이하게 하기 위함

PIYUJIN commented 10 months ago
  1. 예상 가능한 상태들을 enum class로 정의한다.
  2. 정의한 상태별로 while 문 내부를 분기한다.
  3. 각 상태에 대한 클래스들을 정의한다.
  4. 각 상태에서의 입출력 부분을 모두 구현한다.
  5. 구현된 화면을 보고 저장할 데이터들을 선별한다.
  6. 데이터 저장 관련 기능을 구현하면서 프로그램과 연동시킨다.