항상 할 일을 기록하고 있다. 

미리 적어둔 할 일에 빠져서 하고 있다보면 목적을 잃고, 해야했던 일만 생각하여 매진하게 된다.

그렇게 되면, 중간에 본질적인 부분들이 잊혀져서 방향을 잃게 됐다.

 

예를 들어, '테스트를 위한 객체들을 잘 생성해보기'라는 할 일이 있었다.

깊게 빠지다보니, '발생하는 에러를 어떻게 해결해야 할지'만 생각하고,

'테스트 객체가 구체적으로 어떤 부분들을 테스트해야하는지', 잊어버리게 되었다.

결국, 작동하는 코드를 만들어보는 것이 목적이 돼버렸다.

 

진작에 목적이 무엇인지 정리했다면, 시간 낭비를 줄이고 목표하는 것 주위에 계속 맴돌았을 것이다.

 

한 영상에서 유저스토리 형식으로 할 일을 정리하는 방법을 알게 됐다.

무엇을, 누가, 왜의 3문에 명확하게 대답하는 것이다.

 

'내가, 테스트를 명확하게 진행하기 위해, 테스트 객체 생성 방법을 고민해야한다.'

 

이전보다 덜 헤매게 될 것이다.

 

출처 : 유튜브 "일하는우리, working us," ( www.youtube.com/watch?v=_vyhlcK3zK4 )

'Reviews' 카테고리의 다른 글

프로토 타이핑 모델  (0) 2021.05.01
버그의 분류  (0) 2021.05.01
객체지향 디자인 패턴 2  (0) 2021.04.29
객체지향 디자인 패턴 1  (0) 2021.04.29
DTO와 VO  (0) 2021.04.29

- 프로토타이핑 모델이란,

: 초기 고객(사용자)의 요구사항을 검토해서 프로토타입을 개발하여 고객에게 요구사항을 수정하거나 추가하는 등

 고객의 의견을 지속적으로 반영하여 본격적인 개발을 하는 것.

 

1) 실험적 프로토타입

: 고객의 부가적인 요구를 확인하기 위해 사용한 프로토타입은 폐기하고 처음부터 진행하는 방식.

 

2) 진화적 프로토타입 ( 나선형 모델 )

: 프로토타입 모델에서 고객의 요구에 따라 프로토타입을 계속 발전시켜 완성해나가는 방식.

 

 

 

출처 : 유튜브 ' IT TOPIC ' ( www.youtube.com/watch?v=o0DKY9NKjK0 )

'Reviews' 카테고리의 다른 글

할 일을 기록하는 방식 ( 유저스토리 형식 )  (0) 2021.05.06
버그의 분류  (0) 2021.05.01
객체지향 디자인 패턴 2  (0) 2021.04.29
객체지향 디자인 패턴 1  (0) 2021.04.29
DTO와 VO  (0) 2021.04.29

1) 발생 조건별 

 

  1-1) 조건이 간단한 경우

: 특별한 경우가 아닌, 간단한 조건을 통과하고도 발생( 버그가 사용자에 의해 쉽게 목격됨 )

  

  1-2) 조건이 복잡한 경우

: 드물게 여러 조건을 거쳐 발생 ( 버그가 사용자에 의해 드물게 목격됨 )

 

 

 

2) 발생 원인별

 

 2-1) 원인이 간단한 경우

 

 2-2) 원인이 복잡한 경우

 

 

 

3) 치명도

 

3-1) 프로그램 운영에 치명적인 경우

 

3-2) 프로그램 운영에 치명적이지 않은 경우

 

 

 

 

 

- 버그가 발생하는 근본적인 원인

가령, 게임 속 물리 엔진은 현실과 다르다.

> "인간인 개발자가 이렇게 다른 환경에서 경우의 수들을 완벽하게 파악하고 대응하기 어렵다"라고 이해했다.

 

- 버그가 발생할 확률은 조건절의 갯수에 비례한다.

통과하는 조건절이 10개만 돼도 1024개의 경우의 수를 갖는다.

버그의 재현이 어려울수록 버그를 찾기도 어렵고 수정하기도 어렵다.

 

 

 

 

 

 

 

출처 : 유튜브 '개발자 라라' ( www.youtube.com/watch?v=JwV3UvvxMs4 )

'Reviews' 카테고리의 다른 글

할 일을 기록하는 방식 ( 유저스토리 형식 )  (0) 2021.05.06
프로토 타이핑 모델  (0) 2021.05.01
객체지향 디자인 패턴 2  (0) 2021.04.29
객체지향 디자인 패턴 1  (0) 2021.04.29
DTO와 VO  (0) 2021.04.29

1) Facade pattern ( Facade = 프랑스어로 외벽, 측면을 뜻함 )

: 특정한 결과물을 위해 여러 클래스의 기능, 작업을 하나의 메소드나 클래스에 모아 실행시키는 것.

 

2) Template-method pattern

: 다른 클래스의 메소드를 오버라이딩해서 다른 방식으로 사용하는 것.

 

3) Decorator pattern

: 어떤 객체가 사용할 수 있는 메소드를 특정 클래스에 모아두고, 조건에 따라 다른 메소드를 적용시키는 것.

 

4) Factory-method pattern

: 객체를 생성하는 일을 다른 하나의 클래스에 위임하고 이 클래스는 사용하고자하는 객체의 조건에 따라 넘겨진 인자에 따라 다른 객체를 생성해냄.

( 해당 클래스를 전부 알 필요없이, 인자만 넘겨줌으로써 결과물을 얻을 수 있다. )

 

5) Abstract Factory-method pattern

: 기본 형태를 추상 클래스나 인터페이스로 두고, 변화된 형태의 클래스가 이를 상속받아, 다양성을 늘리는 것.

 

6) Mediator pattern

: 특정 이벤트가 발생했을 때, 다른 클래스에 이를 알리는(중재하는) 클래스를 두는 것.

 

7) Composite pattern

: 같은 방식으로 다뤄져야할 요소들과 이 요소를 담는 것을 같이 묶어두는 것.

 

 

 

 

 

 

출처 : 유튜브 '얄팍한 코딩사전' (www.youtube.com/watch?v=q3_WXP9pPUQ)

 

 

'Reviews' 카테고리의 다른 글

프로토 타이핑 모델  (0) 2021.05.01
버그의 분류  (0) 2021.05.01
객체지향 디자인 패턴 1  (0) 2021.04.29
DTO와 VO  (0) 2021.04.29
재귀함수  (0) 2021.04.19

1) Singleton

: 객체와 객체에 대한 값들을 private과 static으로 선언, 초기화해서 변화가 없는 하나의 객체만을 사용함.

 

2) Strategy pattern

: 하나의 모듈을 여러 개의 과정에 해당하는 모듈을 매핑하는 것( 관리가 더 수월해진다 ).

 

3) State pattern

: 실행될 작업들을 하나로 묶고, 어떤 상태에 따라 진행될 작업을 호출하는 방식.

 

4) Command pattern

: 특정한 결과를 위해 일련된 작업들을 정의하는 것.

 

5) Adapter pattern

: 형식이 다른 둘 사이에 연결 돼서 두 요소가 호환되도록 함.

 

6) Proxy pattern

: 구체적으로 인터페이스를 사용하고 실행시킬 클래스에 대한 객체가 들어갈 자리에 대리자 객체를 대신 투입하여 부하를 줄이는 것.

 

 

 

 

 

 

 

출처 : 유튜브 '얄팍한 코딩사전' ( www.youtube.com/watch?v=lJES5TQTTWE )

'Reviews' 카테고리의 다른 글

버그의 분류  (0) 2021.05.01
객체지향 디자인 패턴 2  (0) 2021.04.29
DTO와 VO  (0) 2021.04.29
재귀함수  (0) 2021.04.19
Scope  (0) 2021.04.18

 

 

DTO ( Data transfer Object )

 

1) 용도 : 레이어 간 데이터 전달.

 

2) 가변성

: 데이터와 관련된 변수와 getter/setter 메서드 외에, 로직은 담지 않는다.

  setter가 존재할 경우, 중간에 거치는 로직에 의해 데이터가 수정될 수 있다.

 

 

 

 

 

VO ( Value Object )

 

1) 용도 : 데이터 자체를 표현

 

2) 불변성

: 데이터 관련된 것 이외의 로직을 담을 수 있다.

 생성자와 final 키워드로 값이 상수화 되어, 값을 수정할 수 없다.

 

'Reviews' 카테고리의 다른 글

객체지향 디자인 패턴 2  (0) 2021.04.29
객체지향 디자인 패턴 1  (0) 2021.04.29
재귀함수  (0) 2021.04.19
Scope  (0) 2021.04.18
REST API  (0) 2021.04.18

재귀함수에 관한 영상(www.youtube.com/watch?v=aPYE0anPZqI) 내용에 대한 개념 정리

 

- 재귀함수( Recursive function )란?

: 자신을 정의할 때, 자기=aPYE0anPZqI) 내용에 대한 개념 정리

 

 

 

- 재귀함수( Recursive function )란?

 

: 자신을 정의할 때, 자기 자신을 재참조하는 함수

 재귀함수는 반복문을 통해서도 나타낼 수 있다. 재귀함수를 사용하면 반복문보다 

코드의 양을 줄일 수 있다.

 

다음 파이썬 예제를 통해 알아볼 수 있다. 

 

"1+2+3... +(n-1)+n" 즉, 1부터 입력값 n까지를 모두 더하는 예제이다.

 

1) 반복문

 

def num(n) :
    sum = 0
    for i in range(1, n+1) :
        sum += i
    return sum

print(num(10))
>>> 55

 

 

2) 재귀함수

 

def num(n) :
    if n == 1
        return 1
    return n + num(n-1)

print(num(10))
>> 55

 

: 여기서 재귀함수가 연산되는 방식은, return값에 함수 자기 자신이 오면서

    

    n = 10, num(9)를 return

    n = 9,  num(8)를 return

    n = 8,  num(7)를 return

                  .

                  .

                  .

   n = 1, num(0)를 return

 

n값이 1이 되는 조건절에서 return을 받기 전까지

sum(n-1)씩 보류되다가 조건문에서 n == 1을 얻었을 때,

작은 수부터 순차적으로 모든 함수가 연산된다. 

 

만약, 위의 조건절이 없다면 n 값이 0, 음의 정수로 계속 내려가는 무한루프가

발생하기 때문에 

 

'RecursionError : maximum recursion depth exceeded'가 발생한다.

 

 

 

 

'Reviews' 카테고리의 다른 글

객체지향 디자인 패턴 1  (0) 2021.04.29
DTO와 VO  (0) 2021.04.29
Scope  (0) 2021.04.18
REST API  (0) 2021.04.18
포인터  (0) 2021.04.18

Scope에 관한 영상(www.youtube.com/watch?v=HsJ4oy_jBx0) 내용에 대한 개념 정리

 

Scope라는 개념은 JAVA로 직접 코드를 짜보면서 익히게 된 개념이다. 변수의 선언 등 메모리와 관련된 내용은 현재 공부 중인 자료구조에서 개념을 파악한 뒤,포스팅 할 예정이다.

 

Java를 처음 사용할 때, scope의 개념이 없어서 값을 언제 어디서든 수정하도록 전역변수(static)으로만사용한적이 있다.이게 문제가 된다는 이유를 들어본적은 있지만, 그 이유는 파악하지 못했다.

 

javascript에서 var라는 변수는 호출한 뒤에 선언과 할당이 가능하다.이것은 let, const 변수보다 자유도가 높다고 할 수 있다.영상에서 이야기하듯이, var 변수처럼 자유도가 높다면 어느 위치에서 선언이 되고 할당이 되었는지파악하기가 어려울 것이고, 에러가 발생했을 때 수정하는데 또한 애를 먹을 것이다. 즉, java의 static , javascript의 var처럼 전역변수의 성질을 띠는 것은, 당장 코드를 짤 때는 편하지만,이후 수정 등의 유지, 관리가 어려울 것이다.

scope가 한정적인 것과 한정적이지 않은 것. 둘 다 장단점이 있는 것이다.

'Reviews' 카테고리의 다른 글

객체지향 디자인 패턴 1  (0) 2021.04.29
DTO와 VO  (0) 2021.04.29
재귀함수  (0) 2021.04.19
REST API  (0) 2021.04.18
포인터  (0) 2021.04.18

+ Recent posts