본문 바로가기

전체 글7

가변 객체의 위험성 가변 객체를 사용하면 원본이 수정될 수 있기 때문에 위험합니다. 또한 이를 동시에 여러 곳에서 수정하게 되면 데이터의 변경을 추적하는 것이 쉽지 않습니다. 아래 예시는 가변 클래스 Numbers에 숫자를 넣고 값을 변경했을 때 원본 리스트를 확인하는 것입니다. controller 객체의 첫 번째 값을 100으로, 두 번째 값 200으로 수정했기 때문에 당연히 일치하지 않습니다. 하지만 numbers의 결과를 확인해보면 이 또한 값이 바뀌어있습니다. 이는 controller가 numbers와 같은 값을 참조했기 때문입니다. 이처럼 참조값을 공유했을 때 한 쪽 데이터를 수정하면 원본객체에까지 영향이 가게 됩니다. 이를 막기 위해서는 방어적 복사를 통해 값을 복사하거나 새로운 객체를 만들어 참조를 끊어야 합니.. 2021. 8. 29.
Closure Closure 내부함수가 외부함수의 맥락(context)에 접근할 수 있는 것. 자신의 영역 밖(외부함수)에서 호출된 함수의 변수값과 레퍼런스를 복사, 저장해 (내부에서) 이 값들에 접근할수 있게 해준다. 일급 함수를 지원하는 언어에서 *네임 바인딩 기술. 일급 함수를 지원하는 언어의 네임 바인딩 기술. 클로저는 어떤 함수를 함수 자신이 가지고 있는 환경과 함께 저장한 레코드이다. 또한 함수가 가진 프리변수(free variable)를 클로저가 만들어지는 당시의 값과 레퍼런스에 맵핑해준다. 자바는 클로저를 지원하지 않는다. A closure is a nested function which has access to a free variable from an enclosing function that has.. 2021. 2. 10.
Validation Front 단에서 유효성 검증을 하는데 1. 유효성 검증 서버는 클라이언트의 요청에 대해 응답만 할 뿐이다. 클라이언트의 요청이 브라우저인 포스트맨으로 요청을 하든 이를 구분할 수 없다. 따라서 클라이언트 단에서 유효성 검증을 했더라도 다른 방법으로 로그인 하는 경우를 대비해 서버단에서 최종 검증을 해줘야 한다. 아래와 같이 required 조건을 걸어주게 되면 기본적으로 잘못된 값이 입력된 경우 오류 메세지를 띄워준다. 하지만 브라우저를 통하지 않고 POSTMAN과 같은 다른 경로로 접속을 시도했을 때 서버의 응답을 막을 방법이 없다. 따라서 서버단에서 이를 반드시 최종적으로 점검해야 한다. 2. Validation 2021. 2. 9.
assertThat 에러 문제 상황 assertThat을 이용해 테스트 코드를 검증하려 했으나 아래와 같은 에러 발생. assertThat까지만 입력했을 경우 import에 관련된 문구조차 뜨지 않는다. import에 관한 구문을 보고 싶으면 assertThat( )까지 작성해줘야 한다. assertThat만 입력했을 경우 import에 관한 것을 찾을 수 없다. assertThat()까지 입력하면 import에 관한 메세지를 볼 수 있다. 초기 시도 harmcrest에서 제공하는 Junit4기능을 선택해 assertThat구문을 작성했다. hamcrest에서 제공하는 라이브러리를 import하면 위와 같은 코드가 자동으로 추가된다. 하지만 is( ) 구문을 작성하려고 하자 다시 에러가 발생했다. 해당 라이브러리를 찾을 수 없었.. 2021. 1. 31.