엣지 케이스와 코너케이스 [미완]

1. 엣지케이스

데이터값이 알고리즘에 의해 일정한 범위를 넘는 경우

 

예시 : 변수의 값이 -128~127의 범위를 넘는 경우

 

 

2. 코너케이스

여러가지 변수와 환경의 복합적인 상호작용에서 발생하는 문제

 

예시 : 

1) 변수의 값으로 128이 입력되었을때,  A기계에서는 정상작동, B기계에서 오류

2) A상황에서는 정상작동, B상황에서는 오류

 

 

3. 사이드 이펙트

원래의 목적과 다르게 다른 효과 또는 부작용이 발생

 

예시 : 

1) atackOnEnemy라는 메소드를 만들어서 사용했더니 npc나 건물도 때려짐

2) 프로필 이미지 메소드를 수정했더니, 캠페인이나 다른 이미지 업로드 기능에서도 동작해서 오류가 생김


 

해결방법

1) 독립성

2) 약한 의존성

3) 명시적

3) 접근제한자

4) 기능의 분리

 

5) 그외 - 설계, 기능 별 연관관계, 모듈별 인터페이스

6) 코딩 스타일 & 컨벤션을 강화, 강제하여 통일성 있는 코드 구현

 


* 어떤 기능을 구현할때 다른사람들은 어떻게 구현하는지, 할지를 많이 검색하고, 찾아보고, 자문해봐야함


1) 독립성 :

- 1개의 메소드는 1개의 기능을 한다.

- 각각의 기능들을 모듈로 구현

- 독립적인 기능을 지원하는 객체를 구현하고, 그 객체들이 모여서 프로그램이 개발되는 것 : 객체 지향 프로그래밍

- 재사용성 증대

 

2) 약한 의존성 : (의존성이랑 서로간에 영향력)

- 메소드안에서 여러가지 일을 할 경우, 의존성이 생길 수 밖에없음 

 

예시) 메소드 안에 전부 구현 or 쪼개서 구현

1) db에서 유저 데이터를 가져와서 이메일을 분류한뒤에,

2) 이메일중에 특정 문자열을 제거하고,

3) 나온 이메일 데이터를 기반으로 이메일을 발송하고, 

4) 이메일이 없는 유저에게는 문자를 발송

5)실패유무를 데이터를 db에 로그 저장

 

다른 예시) 구조 : 게임을 개발할때 퀵스킬창은 5개, 스킬은 10개, 100개일때를 고민

 

- 스프링이나 일반적으로 말하는의존성 주입(DI)이라는 개념과는 비슷하면서도, 살짝 다름

 

 

 

----------------------------

html 인라인 스타일 -> css

컨트롤러 -> 객체지향

모듈화 중요

 

 

 

댓글

Designed by JB FACTORY