fas

ALL

· DEV/How to
긴 매개변수 목록 어떤 함수에 매개변수가 많을수록 함수의 역할을 이해하기 어려워진다. 과연 그 함수는 한가지 일을 하고 있는게 맞는가? 불필요한 매개변수는 없는가? 하나의 레코드로 뭉칠 수 있는 매개변수 목록은 없는가? 어떤 매개변수를 다른 매개변수를 통해 알아낼 수 있다면, "매개변수를 질의함수로 바꾸기"를 사용할 수 있다. 기존 자료구조에서 세부적인 데이터를 가져와서 여러 매개변수로 넘기는 대신 "객채 통째로 넘기기"를 사용할 수 있다. 일부 매개변수들이 대부분 같이 넘겨진다면, "매개변수 객체 만들기"를 사용할 수있다. 매개변수가 플래그로 사용돤다면, "플래그 인수 제거하기"를 사용할 수 있다. 여러 함수가 일부 매개변수를 공통적으로 사용한다면 "여러 함수를 클래스로 묶기"를 통해 매겨변수를 해당 ..
1. 동적 계획법 복잡한 문제를 여러 개의 간단한 문제로 분리하여 부분의 문제들을 해결함으로써 최종적으로 복잡한 문제의 답을 구하는 방법 1.1. 동적 계획법의 핵심 이론 1.1.1. 동적 계획법의 원리와 구현 방식 큰 문제를 작은 문제로 나눌 수 있어야 한다. 작은 문제들이 반복하여 나타나고 사용되며 이 작은 문제들의 결괏값은 항상 같아야 한다. 모든 작은 문제들을 한번만 계산해 DP테이블에 저장하며 추후 재사용할 때는 이 DP테이블을 이용한다. 이를 메모이제이션 기법이라고 한다. 동적 계획법은 top-down 방식과 bottom-up 방식으로 구현할 수 있다. 1.1.2. 동적 계획법 대표 예시 피보나치 D[N] = D[N-1] + D[N-2] 동적 계획법으로 풀수 있는지 확인하기 D[1] = 1 D..
· DEV/WAU
⌨️ 테스트 코드 그리고 TDD 내가 여기서 말하고 싶은 건 TDD에 대한 찬양도 무조건적인 맹목도 아닌 테스트 코드 그리고, 충분한 테스팅에 대해 중요성에 대해 말하고 싶다. 1. TDD 테스트 주도 개발 (Test-Driven Development, TDD)은 소프트웨 개발 방법론 중의 하나로, 선 개발 후 테스트 방식이 아닌 선 테스트 후 개발 방식의 프로그래밍 방법을 말한다. 다시 말해 먼저 자동화된 테스트 코드를 작성한 후 테스트를 통과하기 위한 코드를 개발하는 방식의 개발 방식을 말한다. 1.1. TDD를 이용한 개발방법 1. 테스트 케이스 작성 2. 테스트 케이스를 통과하는 코드 작성 3. 작성한 코드 리팩토링 형식으로 이루어진다. 여기서 우리 같은 신입들은 많이 힘들어하는데, 나는 그 이유..
· DEV/How to
짧은 함수 vs 긴 함수 함수가 길 수록 더 이해하기 어렵다 vs 짧은 함수는 더 많은 문맥전환을 필요로 한다. "과거에는" 작은 함수를 사용하는 경우에 더 많은 서브루틴 호출로 인한 오버헤드가 있었다. 작은 함수에 "좋은 이름"을 사용했다면 해당 함수의 코드를 보지 않고도 이해할 수 있다. 어떤 코드에 "주석"을 남기고 싶다면, 주석 대신 함수를 만들고 함수의 이름으로 "의도"를 표현해보자. 사용할 수 있는 리팩토링 기술 대부분 함수 추출하기로 해결할 수 있다. 함수로 분리하면서 해당 함수로 전달해야 할 매개변수가 많아진다면 다음과 같은 리팩토링을 고려해볼 수 있다. 임시 변수를 질의 함수로 바꾸기 매개변수 객체 만들기 객체 통째로 넘기기 조건문 분해하기를 사용해 조건문을 분리할 수 있다. 같은 조건으..
· DEV/How to
중복코드 중복 코드의 단점 비슷한지, 완전히 동일한 코드인지 주의 깊게 봐야한다. 코드를 변경할 때, 동일한 모든 곳의 코드를 변경해야 한다. 사용할 수 있는 리팩토링 기술 동일한 코드를 여러 메소드에서 사용하는 경우, 함수 추출하기 코드가 비슷하게 생겼지만 완전히 같지는 않은 경우, 코드 분리하기 여러 하위 클래스에 동일한 코드가 있다면 메소드 올리기 1. 함수 추출하기 "의도"와 "구현" 분리(주관) 어떤 코드를 읽을 때 한 번에 술술 -> 의도 코드를 읽을 때 어떻게 작동하는 지 이해하려고 시간과 노력 -> 구현 무슨 일을 하는 코드인지 알아내려고 노력해야 하는 코드라면 해당 코드를 함수로 분리하고 함수 이름으로 무슨 일을 하는지 표현할 수 있다 한 줄짜리 메소드도 괜찮은가? 거대한 함수 안에 들어..
#Spring 1. Spring Security Architecture 1.1. 스프링 시큐리티의 구현 스프링 시큐리티는 Servlet Filters 를 기반으로 제공합니다. 그래서 간단히 Filters 에 대해 알고 시작하면 좋으나.. 약식으로 정리하겠습니다 :) 위 그림 처럼 Spring Security는 Filter 하나를 Proxy패턴으로 구현하여 그 기능을 추가해줍니다. 1.2 Authentication SecurityContextHolder SecurityContext Authentication GrantedAuthority AuthenticationManager ProviderManager AuthenticationProvider Request Credentials with Authentic..
· PROJECT/KOSA
이전 글 2024.01.02 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : 연관에 대하여 [1/5] 2024.01.05 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : Legacy와 현재 구현한 코드 [2/5] 2024.01.07 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : 연관도 변화 [3/5] 2024.01.10 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : 캐시 [4/5] ⌨️ 연관 게시물 구현 마무리 신입에게 있어서 막연한 것이 문제 상황을 해결 혹은 단순한..
· PROJECT/KOSA
이전 글 2024.01.02 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : 연관에 대하여 [0/0] 2024.01.05 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : Legacy와 현재 구현한 코드 [2/0] 2024.01.07 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : 연관도 변화 [3/0] ⌨️ 캐시 1. 캐시 우선 왜 캐시를 사용했는지에 대해 얘기해 보자 1.1. 캐시의 사용목적 내가 생각하는 캐시의 사용목적은 이렇다 동일한 API 요청이 반복 API 응답이 변하지 않음 API 응답이 자주 업데이트 되지 않음 위와 ..
· DEV/WAU
⌨️ DB 의존 설계? DB 모델 주도? 뭔가 말만 들어도 확 와닿지 않는다. 최근 본 영상인데 비슷한 관점이 많이들 있는 거 같아서 한 번 고민해 보게 되는 것 같다. 두 영상의 내용은 전체적으론 다르지만 그 안에서 DB의존 DB모델이라는 언급이 있다. 이 부분에 대해 짚고 가볼까 한다. 한쪽에서는 개념객체(*제미니의 개발실무) 한쪽에서는 유스케이스의 행위(*하찮은 오후)가 DB에 의존한 개발에서는 명확히 표현되지 않는다고 한다. --- 우선 개념객체라는 단어는 채널주께서 본인만의 언어로 사용하시는 건데, 나의 경우에서는 본능적으로 어떠한 개념이나 기능을 객체로 나타낸 것이라고 생각을 했다. --- 1. DB 모델 우선 그럼 DB 모델 혹은 DB 의존에 대한 합의부터 이루어져야 할 것 같다. 우리가 가..
ckaanf
'분류 전체보기' 카테고리의 글 목록 (4 Page)