inblog logo
|
LifeLog, DevLog
    TIL

    TIL 20251216~19

    KYJTHEYJ's avatar
    KYJTHEYJ
    Dec 17, 2025
    TIL 20251216~19
    Contents
    20251216~19어려웠던 점

    20251216~19

    • 콘솔 기반의 상품을 출력하여 판매 등의 기능을 수행하는 커머스 프로그램

    • 객체 지향 기반으로 캡슐화까지가 기본 과제

    • 장바구니, 상품의 등록, 수정, 삭제 등이 가능한 관리자, 등급에 따른 결제 할인
      람다, 스트림 기반으로 바꾸기 등의 도전 과제


    어려웠던 점

    • 좋은 코드인가의 의구심

      • 처음에 상품 등록시 직접 객체 등록으로 만들었다가
        상품을 개별로 초기 등록하기 보다는 한번에 목록으로 등록하는 방식이
        더 낫지 않을까 하고 중첩 배열로 통해 받는 등
        기능 구현부에서 좀 혼자 어렵게 만드는 점이 처음에 잦았다

      • 작게 작게 구현해야 코드의 복잡도와 결합도가 낮아지는 건데
        맨날 이게 좋지 않나 저게 좋지 않나 하는거 같다

    • 도전 과제를 진행하며 구조를 나름 만들어보려 했던 것

      • Display - Process - Start 로 각각 기능부의 메서드 흐름 구조를 지키고
        나중에 메인이 되는 클래스에서 한번에 몰아서 실행하면 코드도 간결하고
        프로세스의 수정이 필요하면 해당 클래스에 가서 수정하면 되겠지
        하는 마인드로 나름 패턴을 만들어 갖다 붙였는데 이게 좋은 선택인지 모르겠다

      • 괜히 클래스와 코드만 엄청 늘어난거 아닌가 하는 느낌..

    • 순환 의존성 해결하기

      • 설계도 미흡한데 개발도 좀 꼬이니 관리자 기능 클래스와 카테고리 클래스가
        서로를 의존할 수 밖에 없는 코드를 만들어내기 시작했다

        결국은 외부로 초기 데이터성 클래스를 만들어 빼서 해결했다

      • 항상 개발하면서 순환 의존성 코드를 만들어내고
        항상 혼자 앓아눕는 경우가 많았는데 이번에도 좀 그랬다

      • 외부로 뺄 수 있으면 외부로 빼서 관리하는 것을 제발 기억했으면 좋겠다

    • 다양한 인터페이스 활용하기

      • 관리자나, 장바구니의 경우엔 따로 상품이 묶인 리스트를 지니는게 아닌
        기능 구현이 된 메서드를 실행해야 메뉴 같은 느낌이 들거라 생각했다

      • 그러다보니 기능은 다 만들었는데 메인 메뉴에 붙이질 못하고 있었다

      • 역시 초기 필수과제에서 개발 코드의 확장성을 고려하지 못한 것이 근본이나
        어떻게든 해결 방법을 찾고 싶었고 Consumer 인터페이스가
        객체만 받아 소비하는 인터페이스 인걸 알고 accept 메서드와 해결했다

      • 공부가 모자란가보다

    간이 콘솔 기반 + 메모리 저장 커머스 시스템
    Share article
    Contents
    20251216~19어려웠던 점

    LifeLog, DevLog - https://github.com/KYJTHEYJ

    RSS·Powered by Inblog