전체 글205 클린코더스 강의 내용 정리 #004 - Correct Comment ? (올바른 주석 작성 방법) 서론 보통 개발을 할 때 유지보수를 위해 주석을 달거나 또는 잊어먹지 않기 위해 적는 경우도 있다. 이번 챕터에서는 이러한 주석들이 올바르지 않게 사용하는 방법에 대해 지적하고, 올바른 사용 방법에 대해 강의한다. 이 강의를 듣고 필요한 부분을 정리한다. Coding Standards에 대해 조직이 일정 수준의 크기가 되면 관료적인 문서화를 요구한다. >> 필요하다. 대신, 결국엔 그 문서를 보기보단 소스 안에 해당 내용을 더 잘 녹일 수 있느냐가 중요하다. 코드내에서 명확하게 작성되어있지 않으면 헤매는 것은 문서가 되어있다해도 매 한가지다. (문서의 양은 광대하다.) Coding Standards가 코맨트 작성을 강요하게 된다면 예시에서의 Comment 작성 부분을 보면, 메서드의 이름과 중복적인 내용.. Refactoring/Clean Coding Skill 2022. 4. 11. [Spring Boot] @SessionAttridutes, @ModelAttribute란? 서론 이번글에서는 타이틀에서 언급한 세션 관련된 애노테이션에 대해 학습해보려한다. 바로 알아보도록 하자. @ModelAttridute란? 사용자가 요청 시 전달하는 값을 오브젝트 형태로 매핑해주는 애노테이션이다. @SessionAttridutes란? 모델 정보를 HTTP 세션에 저장해주는 애노테이션이다. 1. 컨트롤러 메서드 중 @SessionAttridutes에 지정한 이름과 동일한 이름이 있다면 이를 세션에 저장시켜주는 역할을 한다. >> 뷰가 이 모델을 참조해서 기존 사용자 정보를 폼에 바인딩 시키기 위해서이다. 2. 여러 화면에서 사용해야 하는 객체를 세션에서 공유할 때 사용한다. 3. @ModelAttribute가 지정된 파리미터가 있을 때 해당 파라미터에 전달해줄 오브젝트를 세션에서 가져온다... Programming/Spring 2022. 4. 9. [Spring Boot] Thymeleaf Caching의 의미와 설정 (템플릿 캐싱) 서론 이번 글에서는 템플릿 엔진 중 하나인 타임리프의 캐시에 대해 알아보려한다. 기본적으로 템플릿은 최초 사용될 때 한 번만 파싱되는 성격을 갖고있다. 파싱된 결과는 향 후 사용을 위해 캐시에 저장되는데, 이것은 프로덕션에서 애플리케이션을 사용할 때 좋은 기능이다. 매번 요청을 처리할 때마다 불필요하게 템플릿 파싱을 하지 않으므로 성능을 향상시킬 수 있기 때문이다. 이러한 캐싱이 개발할 때는 오히려 불편한 요소로 작용된다. 애플리케이션을 시작하고 디자인 수정 후 새로고침을 하더라도 수정 전의 페이지만 나오는 것을 확인할 수 있는데 이를 보완하기 위해 해당 캐싱의 속성을 설정할 수 있게끔 지원해준다. 이번 글에서는 해당 내용을 설정하는 방법에 다뤄보려한다. 템플릿 엔진 캐싱 방법 필자같은 경우는 타임리프로.. Programming/Spring 2022. 4. 8. [Spring Boot] @Vaild 유효성 검사 하는 방법 (개념/ 예제) 서론 이번 글에서는 입력하는 부분에 대한 @Vaild 애노테이션을 이용하여 유효성 검사하는 방법에 대해 알아보려한다. 필자는 SpringInAction5 교재에 있는 내용을 활용하여 작성했다. 유효성 검사란? 1. 데이터의 값이 유효한지, 조건에 타당한지 확인하는 것을 말한다. 2. 올바르지 않은 데이터를 서버 또는 DB로 전송되는것을 막기 위함이다. @Vaild를 이용한 유효성 검사 방법 #01. Dependency 추가 @Vaild를 사용하기 전 pom.xml에 Dependency를 아래와 같이 추가해줘야 한다. org.springframework.boot spring-boot-starter-validation ** Validation 어노테이션 정리 Anotation 제약조건 @NotNull Nul.. Programming/Spring 2022. 4. 8. 클린코더스 강의 내용 정리 #003 - Function Structure 서론 이번 글에서는 함수들의 구조에 대한 내용을 듣고 정리하려고 합니다. 한번 알아봅시다. Function Structure ? Arguments 문제1 - 인자가 많아지면 복잡도가 증가한다. 상황에 따라 다르겠지만 보통은 인자 3개를 최대로 보고 설계한다. 이를 해결할 수 있는 방법은 뭐가 있을까? 1. 좋은 이름을 갖는 Setter를 쓰자. 2. Java Bean Pattern을 사용한다. 3. Builder Pattern을 적용한다. 가장 추천하는 방법은 Builder Pattern을 사용하는 것이다. 아래의 예로 보자. Builder Pattern 예시 Builder Pattern 적용 전 Builder Pattern 적용 후 적용 후 JUnit 테스트 Builder Pattern을 적용 후 확실.. Refactoring/Clean Coding Skill 2022. 4. 8. [Git] There isn’t anything to compare 해결 방법 서론 필자가 STS를 이용하여 git commit을 하는 과정 중에 새로 원격지를 생성하여 커밋을 한 후 GitHub에서는 Pull Request는 뜨는데 들어가면 아래와 같은 문구로 뜨는 문제가 발생하였다. 어떻게 해결하는지 알아보자. 발생 이유 필자는 STS에서 master로 push를 하였고 기본 브랜치가 master로 잡혀있어서 아직 main 브랜치에 미 적용 단계여서 위와 같은 문구가 나왔던 것이다. [여담] 이전엔 default가 master였는데 마스터 슬레이브라는 용어가 흑인 문화에서 인종차별적 발언이 될 수 있다는 문제로 master에서 main으로 바뀌었다고 한다! 해결 방법 Git Bash를 이용하여 아래와 같이 명령어를 입력해주면 된다. git checkout master git b.. Git 2022. 4. 7. [Spring Boot] DevTools는 무슨 역할을 할까? (기능 / 특징) 서론 Spring Boot 에서는 여러 도구를 제공하는데, 그 중 하나인 DevTools에 대해 알아보자. DevTool란? 이름에서 암시하듯, DevTools는 스프링 개발자들에게 편리한 도구를 제공한다. [제공 기능] 1. 코드가 변경될 때 자동으로 애플리케이션을 다시 시작시킨다. > DevTools는 변경을 감시하며, 뭔가 변경되었음을 알게 되면 자동으로 애플리케이션을 다시 시작시켜주는 속성이 있다. 변경이 감지되는 경우 DevTools는 우리 프로젝트 코드를 포함하는 클래스 로더만 다시 로드하고 스프링 애플리케이션 컨텍스트를 다시 시작시켜준다. 그러나 다른 클래스 로더와 JVM은 그대로 둔다. 따라서 애플리케이션이 시작하는데 걸리는 시간을 조금이나마 단축해준다. 2. 브라우저로 전송되는 리소스 (.. Programming/Spring 2022. 4. 7. [Spring Boot] JAR / WAR 배포는 무엇으로 결정할까? (개념 / 특징 / 차이점) 서론 이번 글에서는 jar와 war가 각자 갖고있는 특징이 있고 상황에 맞게 배포를 해야하는데 이 부분에 대해 정리를 해보려한다. ** 필자는 SpringInAction5의 책을 참고하여 작성했다. JAR는 언제 쓰일까? JAR 패키징은 클라우드를 염두에 둔 선택이다. WAR 파일은 기존의 자바 애플리케이션 서버에 애플리케이션을 배포할 때는 적합하지만 대부분의 클라우드 플랫폼을 구성하는데는 잘 맞지 않는다. 일부 클라우드 플랫폼에서는 WAR파일을 배포하고 실행할 수 있다. 그러나 모든 자바 클라우드 플랫폼은 실행 가능한 JAR파일을 사용한다. 따라서 Spring Initializer에서도 JAR 패키징을 기본값으로 사용하는 것이다. JAR의 특징을 정리해보면.. 1. JAR는 자바로 만든 어플리케이션의 .. Programming/Spring 2022. 4. 6. [Spring Boot] JUnit Test Error - "0 containers and 1 tests were Method or class mismatch" 서론 Springboot JUnit에서 테스트를 하고 있는 중 아래와 같은 에러가 발생하였다. 에러 문구 0 containers and 1 tests were Method or class mismatch 해결 방법 Settings -> Build, Execution, Deployment -> Build Tools -> Gradle 에서 Build and run using과 Run tests using의 속성을 Intellij IDEA로 변경. 에러 발생 이유 빌드할 때 JUnit으로 실행되어야 하는데 Gradle로 실행되어 발생한 문제이다. IntelliJ IDEA로 변경 시 해결. Error Document/Spring 2022. 4. 6. 클린코더스 강의 내용 정리 #002 - Function 서론 이번 편에서는 제목에서 알 수 있듯 함수(Function)에 대해 강의들은 내용을 정리하려한다. "Function 의 개념과 역할을 알고 리팩토링 하자" 1. 함수는 한가지의 일만 해야한다. 2. 잘 지어진 서술적인 긴 이름을 갖는 함수들로 유지해야한다. 3. 더 작아질 수 없을 만큼 작아야 한다. 4. 큰 함수를 보면 클래스로 추출할 생각을 해야한다. 5. 클래스는 일련의 변수들에 동작하는 기능의 집합이다. 6. 메서드 추출 후 불필요한 괄호는 제거한다. > 괄호는 하나 이상의 책임을 갖는다는 증후를 표현한다. 위의 내용들을 조합하여 강의에서 리팩토링 하는 것을 볼 수 있는데, 정말 쪼갤 수 있을 때까지 쪼개는데 여기서 가장 중요 포인트는 쪼갤 때마다의 변수 및 메서드의 이름이다. 이름을 정말 한.. Refactoring/Clean Coding Skill 2022. 4. 5. 이전 1 ··· 8 9 10 11 12 13 14 ··· 21 다음 💲 많이 본 글