분류 전체보기41 Clean Code 제 5장. 형식 맞추기 오늘 읽은 범위 : 5장. 형식 맞추기 책에서 기억하고 싶은 내용 타인이 내 코드를 읽을때 어수선해보인다면 그 사람은 프로젝트의 다른 측면도 똑같이 무성의하게 처리했을거라고 생각할것이다. 개발자라면 형식을 깔끔하게 맞춰 코드를 짜야한다. 형식을 맞추는 목적 코드 형식은 중요하다. 코드 형식 자체는 의사소통의 일환이며 개발자의 일차적 의무이다. 코딩 스타일과 가독성 수준은 유지보수와 확장성에 지대한 영향을 끼친다. 원활한 소통을 장려하는 코드형식 적절한 행 길이 유지 반드시 지킬 엄격한 규칙은 아니지만 바람직한 규칙으로 삼으면 좋겠다. 일반적으로 작은파일이 큰 파일보다 이해하기 쉽다. 적은 코드의 양으로도 커다란 시스템을 구축 할 수 있다. 신문 기사처럼 작성 잘짜여진 코드는 신문기사와 비슷하게 작성되어있.. 2022. 3. 1. Clean Code 제 4장. 주석 오늘 읽은 범위 : 4장. 주석 책에서 기억하고 싶은 내용 코드만이 자기가 하는일을 진실되게 말한다. 주석은 나쁜 코드를 보완하지 못한다 표현력이 풍부하고 깔끔하며 주석이 없는 코드가, 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다. 코드로 저지른 난장판을 주석으로 수습하려는건 깨끗한 코드를 위한 좋은 습관이 아니다. 주석은 코드에 저지른 실패를 만회하기위한 수단이 아니다. 대표적인 나쁜 주석 항목들을 읽으면 왜 나쁜 주석이라 말하는지 이해할 수 있을것 같다. 혼잣말을 주절거리는 주석 같은 이야기를 반복하는 주석 오해의 여지가 있는 애매한 내용을 담은 주석 의무적으로 다는 불필요한 주석 히스토리를 기록하는 주석 좋은 이름을 쓰지 않은 코드를 설명하는 주석 닫는 괄호에 다는 주석 (발전된 IDE.. 2022. 2. 25. Clean Code 제 3장. 함수 오늘 읽은 범위 : 3장. 함수 책에서 기억하고 싶은 내용 함수를 만드는 규칙 작게 만들어라 각 함수가 하나의 이야기를 표현하다. 각 함수가 너무도 멋지게 다음 무대를 준비했다. 이것이 핵심이다. 함수는 한가지 일만 수행해야 하고, 그 함수는 이후에 어떤함수를 실행시킬지에 대한 여지를 남겨두고 있어야한다. 책을 읽는것처럼 흐름을 예측할 수 있게 함수를 작은단위로 만들어야 한다. 블록과 들여쓰기 if문 / else문 / while 문 등에 들어가는 블록은 한줄이어야한다. 중첩구조가 생길 만큼 함수가 커져서는 안된다는 말이다. 블록 내의 그 한줄은 내부 로직을 설명하는 적절한 명명법으로 별도의 메서드로 사용한다면 코드를 이해하기에 더욱 쉬워질것이다. 한 가지만 해라 함수는 한가지를 해야한다. 그 한가지를 잘.. 2022. 2. 23. Clean Code 제 2장. 의미 있는 이름 오늘 읽은 범위 : 2장. 의미 있는 이름 책에서 기억하고 싶은 내용 소프트웨어에서 이름은 어디나 쓰인다. 많이 사용하므로 이름을 잘지으면 여러모로 편하다. 여느 코드 개선 노력과 마찬가지로 이름 역시 나름대로 바꿨다가는 누군가 질책할지도 모른다. 그렇다고 코드를 개선하려는 노력을 중단해서는 안된다. 아래 규칙을 사용하여 코드 가독성을 높히는 연습을 해보자. 이름을 잘 짓는 간단한 규칙 클래스 이름: 동사는 사용하지 않으며 명사나 명사구가 적합하다.(애매하거나 중의적인 명사는 노노) 메서드 이름: 동사나 동사구가 적합하다. 생성자를 오버로딩할때는 static factory method를 사용한다. Complex fulcrumPoint = new Complex(23.0); Complex fulcrumPoi.. 2022. 2. 20. Clean Code 제 1장. 깨끗한 코드 오늘 읽은 범위 : 추천사 ~ 1장. 깨끗한 코드 책에서 기억하고 싶은 내용 추천서 / 들어가면서 사소한 곳에서 발휘하는 정직은 사소하지 않다. 사소한 것은 중요하다. 세세함에 주의 를 기울이는 태도는 그 어떠한 비전보다 전문가에게 더더욱 필수적이 자질이 되었다. 전문가는 작은 실무부터 실력을 쌓고 신뢰를 얻어야 한다. 아주 사소한 것들이 전체의 매력을 깎아먹기 때문이다. 깨끗한 코드가 중요한 이유도 바로 이 이유이다. 내가 작성한 코드에 대해 정직하자! 5S 법칙 정리(정렬) ⇒ 코드에서 적절한 명명법을 사용하자 정돈(체계화) ⇒ 코드는 누구나 예상하는 위치에 있어야한다. 청소(광내기) ⇒ 과거 이력이나 미래의 바람을 기억한 주석 문과 같은 불필요한 건 제거하자 청결(표준화) ⇒ 일관적인 구현 스타일과.. 2022. 2. 19. [Design Pattern] Strategy Pattern https://github.com/donghyeon-dev/StrategyPattern-with-Springboot Strategy Pattern 이란? behavior software design pattern that enables selecting an algorithm at runtime. 알고리즘을 런타임시 동적으로 선택할 수 있게 하는 행동디자인 패턴 알고리즘을 정의하고 각각을 캡슐화하여 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 어떠한 객체의 행위를 캡슐화하여 행위을 행하는 전략에 따라 쉽게 행위를 바꿀수 있도록 도와준다. 기능을 사용하는 부분 과 구현하는 부분 을 명확히 분리하는것이 중요하다. 💡 객체가 할수있는 행위들을 각각의 전략으로 만들어 놓고, 동적으로 행위의 방식(전략).. 2022. 1. 26. [Mac] 환경변수 선언 Mac에서 환경변수를 선언하는 방법에는 2가지가 있다. [임시적 등록] Terminal 명령어 [영구 등록] zshrc / bashrc 에 직접 선언 Terminal 명령어 일시적으로 환경변수가 등록되지만, 터미널이 재부팅 되면 등록된 변수가 사라진다. $ export {환경변수명}={환경변수값} echo {환경변수명} 을 사용해서 환경변수 값을 확인할 수 있다. 수정 또한 같은방식으로 진행하면 된다. 첫번째 명령어와 같이 '=' 사이에 empty space가 존재하면 안된다. ./zshrc 에서 설정하는법 zsh사용자라면 vi ~/.zshrc, bash 사용자라면 v1 ~bashrc 를 사용하여 직접 들어가서 수정한다. export {환경변수명}="{환경변수값}" source ~/.zshrc 를 통해.. 2021. 8. 23. [JPA] @AttributeConverter @AttributeConverter @AttributeConverter를 쓰면 좋은 상황 @AttributeConverter 는 다음과 같은 경우에 유용하게 사용 될 수 있다. JPA가 지원하지 않는 타입을 매핑할때 두개 이상 속성을 갖는 밸류타입을 하나의 컬럼에 매핑할때 AttributeConverter는 자바 타입과 DB 타입간의 변환을 처리해준다. AttributeConverter Interface & Method AttributeConverter의 인터페이스는 아래와 같이 정의되어 있다. package javax.persistence; public interface AttributeConverter { public Y convertToDatabaseColumn (X attribute); publi.. 2021. 8. 6. Docker(2) - Container 다루기 Docker 컨테이너 다루기 컨테이너의 라이프사이클 도커 컨테이너는 실행중, 정지, 파기의 3가지 상태를 가진다. 이를 라이프사이클이라고 하며, run 명령으로 최초 실행한 시점의 상태는 실행중 이다. 컨테이너들이 같은 이미지로부터 생성이 되었다고 하더라도 별개의 상태값을 지닌다. 이것이 컨테이너와 이미지의 큰 차이점이다. 실행 중 상태 run 명령의 인자로 지정된 도커 이미지를 기반으로 컨테이너가 생성되면 이 이미지를 생성했던 Dockerfile에 포함된 인스트럭션에 의해 애플리케이션이 실행된다. HTTP요청을 받는 서버 애플리케이션이면 오류로 인해 종료되지 않는 한 실행중 상태가 지속된다. 이에 비해 명령이 바로 실행되고 끝나는 명령행 도구 등의 컨테이너는 실행중 상태가 길게 유지되지 않는다. 실행이.. 2021. 8. 4. 이전 1 2 3 4 5 다음