분류 전체보기 512

"읽기 좋은 코드가 좋은 코드다" 정리

개발자라면 누구나 들어보았을 Clean Code가 무엇인지 어떻게 작성해야하는지에 대한 책이다. 지은이의 말 中 이 책을 관통하는 핵심 아이디어는 코드는 이해하기 쉬워야 한다는 것이다. 특히, 자신의 코드를 다른 사람이 읽고 이해할 때 걸리는 시간을 최소로 만들어야한다. 1. 코드는 이해하기 쉬워야한다. 가독성의 기본 정리 코드는 다른 사람이 그것을 이해하는 데 들이는 시간을 최소화하는 방식으로 작성되어야 한다. "이해를 위한 시간"이 바로 개발자가 최소화해야하는 값이다. 자신이 작성한 코드를 6개월 뒤에 봤을 때 낯설어 보이고, 이해가 되지 않는다면 위에서 언급한 다른사람에 자기자신 또한 포함될 수 있다. 분량이 적으면 항상 더 좋은가? 일반적으로, 분량이 더 적은 코드로 똑같은 문제를 해결할 수 있다..

Book 2021.05.27

[LeetCode] Strings > Longest Common Prefix

https://leetcode.com/explore/interview/card/top-interview-questions-easy/127/strings/887/ Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 풀이 Prefix 검증의 기준 문자열을 가장 길이가 짧은 문자열로 잡고 진행 기준 문자열[i] 과 다른 모든 문자열의 [i]가 같다면 prefix..

API 개발 기본

엔티티를 파라미터로 받을 경우의 문제 컨트롤러 엔티티 검증을 위한 @NotEmpty같은 로직들이 엔티티에 추가된다. 엔티티를 위한 매우 다양한 API가 만들어지는데, 한 엔티티에 각각의 API를 위한 요구사항들을 담기는 어려움 가장 큰 문제는 엔티티가 변경되면 API 스펙 자체가 변한다. 만약 엔티티의 name필드가 username으로 변경된다면 API 스펙 자체가 변하기 때문에 큰 문제가 발생한다. API 요청 스펙에 맞춰 별도의 DTO클래스를 만들어 DTO 객체를 파라미터로 받아야한다. 절대 파라미터로 엔티티를 바로 받지 말자!! 엔티티를 API 스펙에 노출 X 이와 같이 따로 DTO 클래스를 만들어 파라미터로 받아야한다. 예제를 위해 setter를 사용했지만 실제는 사용 X 엔티티와 표현 계층을 위..

[LeetCode] Strings > Valid Palindrome

https://leetcode.com/explore/interview/card/top-interview-questions-easy/127/strings/883/ Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 풀이 Palindrome이란 뒤집어도 동일한 문자를 뜻한다. isdigit과 isalpha 메서드를 통해 문자와 숫자만 리스트에 담고 이 리스트와..

[LeetCode] Strings > Valid Anagram

https://leetcode.com/explore/interview/card/top-interview-questions-easy/127/strings/882/ Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 풀이 파이썬 dictionary 자료형을 사용하여 문제를 해결하였다. Anagram이란 cat, act / teem, meet 와 같이 한 단어를..

변경 감지와 병합(merge)

준영속 엔티티 영속성 컨텍스트가 더는 관리하는 않는 엔티티를 의미한다. DB에 한번 저장되어 식별자가 존재하는 엔티티. persist() 메서드를 통해 영속성 컨텍스트에 담겼을 때는 식별자가 존재되고, 객체만 생성되었을 때는 식별자가 존재하지 않는다. 따라서 식별자가 존재한다면 준영속 엔티티로 볼 수 있다. 준영속 엔티티를 수정하는 2가지 방법 1. 변경 감지 기능 == dirty checking 2. 병합 사용 == merge JPA가 관리하는 영속 엔티티는 변경 감지를 통해 어떤 것이 변경되었는지 JPA가 알고 있기 때문에 트랜잭션 COMMIT 시점에 바뀐 부분을 자동으로 UPDATE SQL문을 날려 바꿔준다. 변경 감지 기능 사용 Id를 기반으로 영속성 컨텍스트안의 영속성 엔티티를 가져온다. 이것을..

javax에서 제공하는 @Valid, Spring이 제공하는 BindingResult

@Valid springboot가 버전업을 하면서 web 의존성안에 있던 constraints packeage가 모듈로 빠졌다. SpringBoot 2.3 이상에서는 따로 의존성을 추가해주어야한다. implementation 'org.springframework.boot:spring-boot-starter-validation' @Valid를 이용하면, service 단이 아닌 객체 안에서, 들어오는 값에 대해 검증을 할 수 있다. javax.validation.constraints 패키지를 보면 많은 어노테이션들이 존재한다. @Valid를 이용한 객체 검증 시 기본적으로 이 어노테이션을 이용 공식문서 코드 예시) 컨트롤러 @Controller @Slf4j public class MemberControll..

Spring/Spring MVC 2021.05.22

[백준] 15868번 > 치킨 배달

문제 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다. 이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 집을 기준으로 정해지며, 각각의 집은 치킨 거리를 가지고 있다. 도시의 치킨 거리는 모든 집의 치킨 거리의 합이다. 임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r2| + |c1-c2|로 구한다. 예를 들어, 아래와 같은 지..

반응형