본문 바로가기
728x90

분류 전체보기126

클린코드 8기가 끝났다 8주간의 기간이 드디어 끝났다 결론만 얘기하자면 혼자서 이룰 수 없었을 많은 것들을 배웠다 한편으로는 그런 현실이 슬펐다 회사에서는 코드 리뷰를 하지 않는다 이번에 처음으로 코드 리뷰를 받으면서 도대체 나와 같은 경력동안 코드리뷰를 받는 사람들은 얼마나 많은 것들을 배웠을까 라는 생각에 잠이 오지 않았다 실제로 이번과정을 하면서 두달동안 잠을 4~5시간 정도 잔 것 같다 20살때부터 입버릇처럼 해왔던 말이 잠은 죽어서자면 된다 였다 그만큼 잠안자고 투자하는 것에 익숙해있었다 하지만 이번에는 달랐다 미션 하나하나 진행하면서 내가 다른 사람들보다 얼마나 부족한지 뼈저리게 느꼈다 두달동안 오브젝트, 리펙토링, 테스트주도개발, 클린 소프트웨어, 이펙티브 자바를 샀다 그리고 그 중 테스트주도개발과 리펙토링을 다보.. 2020. 7. 4.
테스트에 static으로 mock을 만들어서 사용하면 편하네 마지막 미션 중 Test 케이스를 보니 static 으로 mock 데이터를 만들어놓고 사용하는 방법이 참 좋았다 자칫 여러 개를 여기저기 만들어 놓으면 헷깔리는데 한꺼번에 사용할 수 있으니 좋지 아니한가. 잠깐 전역적으로 사용할 데이터가 있으면 이렇게 사용하는게 좋겠다 public class AnswerTest { public static final Answer A1 = new Answer(UserTest.JAVAJIGI, QuestionTest.Q1, "Answers Contents1"); public static final Answer A2 = new Answer(UserTest.SANJIGI, QuestionTest.Q1, "Answers Contents2"); } 2020. 6. 27.
null == undefined? 자바스크립트 내용을 검증하는 과정에서 null이 undefined까지 커버 할 수 있다는 것을 보았다. (그전에는 그렇게 크게 생각해보지는 않았다) class Assert { static notNull(data) { if (data == null) { throw "Null point exception" } } }위의 코드는 아래의 테스트를 모두 통과한다 describe("assert integration test", function () { it("notNull", function () { expect(() => Assert.notNull()) .toThrow(); }); it("notNull with undefined", function () { expect(() => Assert.notNull(und.. 2020. 6. 26.
@JsonNaming이 편리하네 기존 POJO에서 Jackson 바인딩 시, snake_case를 @JsonProperty로 필드마다 매번 변경하는 것이 번거로웠다. 뭔가 클래스 레벨에서 바로 바인딩 할 수 있는 옵션이 있을 것 같다 해서 찾아보니 stackoverflow에 @JsonNaming이라는 어노테이션에 관련된 내용이 있었다 한마디로 아래의 코드를 public class OAuthToken { @JsonProperty("access_token") private String accessToken; @JsonProperty("refresh_token") private String refreshToken; @JsonProperty("token_type") private String tokenType; private String na.. 2020. 6. 25.
테스트는 주요 로직을 먼저 해도 괜찮네? TDD를 하면서 항상 의존성의 제일 하단에 있는 클래스 먼저 테스트를 했었다 그 이유는 의존하는게 없는 가장 구현하기 간단한 녀석이었기 때문이다 하지만 사다리 타기 게임을 하면서 느낀 것은 핵심 비즈니스 로직을 먼저 구현하는게 더 나을 수도 있겠다 다는 것이었다 사다리 한점을 나타내기 위해 Point 라는 객체를 놓고 그 위에 두 점을 이은 Line 이라는 클래스와 Line들로 이루어진 Ladder를 생성하였다. 하지만 만들면서 느끼점은 각각의 상위의 의존성으로 올라갈 수록 의존하고 있는 객체의 데이터를 자꾸 의식한다는 것이었다. 모름지기 객체의 응집도를 높히고 결합도를 낮추려면 책임주도개발 (일단은) 최고라고 생각한다 객체의 일괄된 행동에 따라 클래스를 작성하게 되면 그 행위들을 하나의 일괄적인 응집도.. 2020. 6. 25.
Interceptor 사용법 회사에서는 관리자 페이지의 보안을 OAuth2 방식으로 하고 있습니다. 유효한 토큰을 API에서 받아와 세선에 저장해놓고 request를 보낼 때 마다 세션에서 토큰이 유효한지 확인하는 작업을 하고 있습니다. 토큰은 클라이언트에서 쿠키로 관리하고 있으며 매 요청을 보낼 때마다 쿠키의 토큰을 확인하고 있습니다. 매 요청마다 session을 찾아 유효한 토큰이 있는지 살피다 보니 매우 반복적인 작업이 되었습니다. React를 사용하면서 Axios의 Interceptor 기능이 있었는데 서블릿에서 기본적으로 Interceptor를 제공해주고 있습니다. 이 방식은 매 요청이 이루어질 때마다 해야되는 작업이므로 수평적으로 관리해주어야 할 필요가 있습니다. 대표적인 방법들이 Filter, Interceptor, A.. 2020. 6. 18.
728x90