본문 바로가기
[Effective Unit Testing] Chap2. 좋은 테스트란? [Effective Unit Testing] Chap2. 좋은 테스트란? -좋은 테스트의 고려 사항은 아래와 같다. 테스트 코드의 가독성과 유지보수성 프로젝트 안에서, 그리고 소스 파일 안에서 코드는 적절히 구조화되어 있는가? 테스트가 무엇을 검사하는가? 테스트는 안정적이고 반복 가능한가? 테스트가 테스트 더블을 잘 활용하는가? ... 2.1. 읽기 쉬운 코드가 유지보수도 쉽다.-자동화된 테스트는 결함을 효과적으로 막아주지만, 테스트 역시 코드인지라 가독성 문제에서 벗어날 수는 없다.읽기 어려운 코드는 검증하기도 어렵고, 결과적으로 테스트를 조금만 작성하는 사태로까지 이어진다.또 그렇게 작성된 테스트는 우리가 생각하는 좋은 테스트와는 거리가 멀다.제품의 구조와 API 가 테스트를 고려하지 않고 만들어졌다.. 2019. 2. 27.
[SQLite3] 06. 임베디드 SQLite3 최적화 #2 [SQLite3] 06. 임베디드 SQLite3 최적화 #2 이 글은 "빠르게 활용하는 모바일 데이터베이스 SQLite3” 이란 글을 보며 필요한 내용만 정리한 글입니다.자세한 내용은 책을 구매해서 보세요 5. 엄격한 자료형 검사 -SQLite3 자체는 동적 자료형 형태지만 typeof() 함수와 CHECK 제약조건을 이용해서 정적 자료형처럼 사용할 수 있다. ex)sqlite> CREATE TABLE testTable( name text CHECK(typeof(name)=‘text’), age integer CHECK(typeof(age)=‘integer’)); CHECK 규칙을 위반할 경우 constraint failed error 가 발생한다. 6. DB 갱신과 트랜잭션 -INSERT/UPDATE .. 2018. 5. 23.
[Effective Java] Serializable 인터페이스를 분별력 있게 구현하자. [Effective Java] Serializable 인터페이스를 분별력 있게 구현하자. - 객체 직렬화(object serialization) API 는 객체를 바이트 스트림으로 인코딩하고, 인코딩된 바이트 스트림으로부터 객체를 복원(디코딩) 하는 프레임워크이다. - 객체를 바이트 스트림으로 인코딩하는 것을 직렬화(serializing)이라 하고, 그 반대의 절차를 역직렬화(deserializing)이라고 한다. - 객체가 일단 직렬화되면, 인코딩된 객체는 향후에 역직렬화 하기 위해 하나의 실행 중인 VM 에서 다른 VM 으로 전송되거나 디스크에 저장될 수 있다. 직렬화는 원격 통신을 위한 표준 통신 회선 수준의 객체 표현을 제공한다. 직렬화 프록시는 effective java 의 직렬화 주제중 가장 .. 2017. 3. 21.
[Effective Java] 실패 원자성을 갖도록 노력하자 [Effective Java] 실패 원자성을 갖도록 노력하자 - 일반적으로 호출된 메소드가 실행에 실패하더라도 객체 상태는 메소드 호출 전과 같아야 한다. 이런 특성을 갖는 메소드를 실패 원자성(failure atomic) 메소드라 한다. - 가장 간단한 방법은 불변 객체로 설계하는 것이다. 객체가 불변이면 실패 원자성과는 아예 무관하다. - 가변 객체를 처리하는 메소드의 경우에 실패 원자성을 성취하는 가장 보편적인 방법은 연산 수행 전에 매개 변수의 유효성을 검사하는 것이다. - 실패 원자성을 성취하는 더 좋은 방법은, 객체를 변경하는 코드 부분에 앞서 실패할 수 있는 코드 부분이 실행되도록 연산 순서를 조정하는 것이다. - 또 다른 방법은 ( 흔하지 않지만 ) 연산 도중에 발생하는 실패를 가로채는 복.. 2017. 3. 3.
반응형