[Kotlin] Framework

PUJIN·2023년 6월 27일
0

코딩 - 프로젝트

목록 보기
2/13
post-thumbnail

Framework


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

  • enum class 활용하여 program state별 코드 관리
class Exercise {
    // 초기 상태 설정
    var programState = ProgramState.PROGRAM_STATE_MENU_HOME
    fun running() {
        while (true) {
            // 프로그램 상태에 따른 분기
            when (programState) {
                ProgramState.PROGRAM_STATE_MENU_HOME -> {
                    val inputMainMenuNumber = mainMenuClass.inputMainMenuNumber()
                    when(inputMainMenuNumber) {

                        MainMenuItem.MAIN_MENU_ITEM1.itemNumber -> {
                            programState = ProgramState.PROGRAM_STATE_MENU1
                        }
                        MainMenuItem.MAIN_MENU_ITEM2.itemNumber -> {
                            programState = ProgramState.PROGRAM_STATE_MENU2
                        }
                        MainMenuItem.MAIN_MENU_ITEM_EXIT.itemNumber -> {
                            programState = ProgramState.PROGRAM_STATE_EXIT
                        }
                    }
                }
                
                ProgramState.PROGRAM_STATE_MENU1 -> {
                    method()
                    programState = ProgramState.PROGRAM_STATE_MENU_HOME
                }
                
                ProgramState.PROGRAM_STATE_MENU2 -> {
                    method()
                    programState = ProgramState.PROGRAM_STATE_MENU_HOME
                }
                
                ProgramState.PROGRAM_STATE_EXIT -> {
                    method()
                    // 프로그램 종료
                    // exitProcess(0)
                    break
            }
        }
    }
}

// program state class
enum class ProgramState {
    PROGRAM_STATE_MENU_HOME, 
    PROGRAM_STATE_MENU1, 
    PROGRAM_STATE_MENU2,
    PROGRAM_STATE_EXIT
}
// 메뉴 항목
public enum class MainMenuItem(val itemNumber:Int){
    MAIN_MENU_ITEM1(1),
    MAIN_MENU_ITEM2(2),
    MAIN_MENU_ITEM_EXIT(3)
}



Framework 구성 순서

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

0개의 댓글

관련 채용 정보