소프트웨어 개발 3대 원칙 : DRY, KISS, YAGNI

2023. 8. 10. 13:29·Unity/Design Pattern
반응형

1. DRY(Don't Repeat Yourself)

DRY 원칙은 코드에서 중복을 피하도록 권장합니다. 효율적인 재사용을 위해 반복되는 코드를 하나의 구성 요소로 통합하는 것을 지지합니다. 이 원칙은 복잡성을 줄이고 유지 관리성을 높이는 것을 목표로 합니다.

시스템이 커짐에 따라 개념의 수와 상호 연결로 인해 복잡성이 기하급수적으로 증가할 수 있습니다. 각 개념과 기능이 한 곳에만 존재하도록 하여 이를 관리하는 것이 중요합니다. 이는 개별 코드 블록에서 팀 전체 기능 및 여러 팀 간의 공유 구성 요소에 이르기까지 프로젝트의 다양한 규모에 적용할 수 있습니다.

DRY 원칙을 위반하는 것을 종종 WET라고 하는데, 이는 'We Enjoy Typing' 또는 'Write Everything Twice'를 의미합니다. WET 관행을 피하면 보다 효율적이고 버그에 강한 시스템이 보장됩니다.

2. KISS (Keep It Simple, Stupid)

KISS는 디자인과 코드의 단순성을 옹호합니다. 이 약어의 변형에는 "Keep it small and simple" 및 "Keep it short and simple"이 포함됩니다. 알버트 아인슈타인은 "할머니에게 설명할 수 없다면 이해하지 못하는 것이다"라고 말했습니다. 단순함은 프로젝트에 대한 더 깊은 이해를 나타냅니다.

단순성을 추구하는 것은 코드 한 줄을 쓰기도 전에 시작됩니다. 구현을 단순화하는 전략과 함께 프로젝트의 목적과 목표에 대한 포괄적인 이해는 성공적인 프로젝트 완료를 위한 토대를 마련합니다.

3. YAGNI(You Ain't Gonna Need It)

YAGNI는 미래의 요구 사항을 예상하여 불필요한 기능이나 코드를 추가하여 과도한 엔지니어링에 대해 조언합니다. 나중에 필요한 것이 아니라 지금 필요한 것을 구현하는 데 집중하십시오.

선제적으로 기능을 추가하면 코드가 불필요하게 길어져 분석하기가 더 어려워지고 버그를 포함할 가능성이 높아집니다. 특정 데이터베이스를 사용하여 데이터를 가져오는 프로그램을 설계한다고 가정해 보겠습니다. 처음부터 다른 잠재적인 데이터베이스와의 호환성을 구축하고 싶은 유혹이 있지만 프로젝트 일정이 길어지고 비용이 증가할 수 있습니다. 현재 요구 사항을 고수하고 필요한 경우 확장하십시오.

DRY, YAGNI, KISS: 단순함의 3요소

DRY, YAGNI 및 KISS 간의 시너지 효과는 우리를 단순성과 효율성으로 안내합니다. DRY는 시스템을 모듈화하여 복잡성을 관리하는 데 도움이 됩니다. YAGNI는 구성 요소 수를 줄이는 데 도움이 되며 KISS는 솔루션의 단순성을 추구합니다.

언급할 가치가 있는 추가 원칙 중 하나는 함수나 클래스가 다른 프로그래머가 예상할 수 있는 동작과 기능을 제공해야 한다는 POLA(Principle of Least Surprise)입니다.

저작자표시 비영리 변경금지 (새창열림)

'Unity > Design Pattern' 카테고리의 다른 글

Unity로 이해하는 빌더 패턴  (0) 2023.09.27
Unity로 이해하는 상태 패턴 (State Pattern)  (0) 2023.08.09
Unity로 이해하는 옵저버 패턴 (Observer Pattern)  (0) 2023.08.08
Unity로 이해하는 팩토리 패턴 (Factory Pattern)  (0) 2023.08.07
Unity로 이해하는 어댑터 패턴 (Adapter Pattern)  (0) 2023.08.06
'Unity/Design Pattern' 카테고리의 다른 글
  • Unity로 이해하는 빌더 패턴
  • Unity로 이해하는 상태 패턴 (State Pattern)
  • Unity로 이해하는 옵저버 패턴 (Observer Pattern)
  • Unity로 이해하는 팩토리 패턴 (Factory Pattern)
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
  • 전체
    오늘
    어제
    • 분류 전체보기 (517) N
      • 상품 추천 (33)
      • MongoDB (4)
      • 하드웨어 (5) N
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (127)
        • Basic (40)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (48)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 다비즈
  • 공지사항

  • 인기 글

  • 태그

    unity
    rtsp
    devlife
    셀레니움
    리뷰이관
    리뷰관리
    codingcommunity
    스크립트 실행 순서
    cv2
    긴유통기한우유
    programming101
    카페24리뷰이관
    list
    appdevelopment
    ipcamera
    codingtips
    파이썬
    믈레코비타멸균우유
    리스트
    programmerlife
    C#
    라떼우유
    Python
    쇼핑몰리뷰
    상품 리뷰 크롤링
    카페24리뷰
    스마트스토어리뷰
    유니티
    스크립트 실행
    learntocode
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
소프트웨어 개발 3대 원칙 : DRY, KISS, YAGNI
상단으로

티스토리툴바