728x90
반응형

전체 글 131

[Clean Code] 3장 함수

깨끗한 코드를 작성하기 위한 세번째 기록 작게 만들어라! 함수를 만드는 첫째 규칙은 ‘작게!’ 다. 함수를 만드는 둘째 규칙은 ‘더 작게!’ 다. 각 함수가 명백하게 하나를 표현하도록 하는 것이 좋다. 블록과 들여쓰기 if문 /else문 /while문 등에 들어가는 블록은 한 줄이어야 한다는 의미이다. 한 가지만 해라! 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 우리가 함수를 만드는 이유는 큰 개념을 다음 추상화 수준에서 여러 단계로 나눠 수행하기 위함이다. 함수 당 추상화 수준은 하나로! 함수가 확실히 ‘한 가지’ 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야 한다. 위에서 아래로 코드 읽기: 내려가기 규칙 코드는 위에서 아래로 이야기처럼 읽고..

[Clean Code] 2장 의미있는 이름

깨끗한 코드를 작성하기 위한 두번째 기록 클린 코드 법칙 1. 의도를 분명히 밝혀라 의도가 분명한 변수 명이나, 함수 명을 사용해야 한다. 2. 그릇된 정보를 피하라 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용하면 안된다. 3. 의미있게 구분하라 읽는 사람이 차이를 알도록 이름을 짓어라. 4. 발음하기 쉬운 이름을 사용하라 지적인 대화가 가능한 코드를 짜라. 5. 클래스 이름, 객체 이름 명사나 명사구가 적합하다. 6. 메서드 이름 동사나 동사구가 적합하다. 7. 한 개념에 한 단어를 사용하라. 똑같은 메서드를 클래스마다 제각각 부르면 혼란스러울 수 있다. 마무리 오늘은 의미를 알기 쉽도록 코드 짜는 법칙을 배웠습니다. 실무에서 적용하여 클린 코드의 법칙을 제 것으로 만들겠습니다.

[Clean Code] 1장 깨끗한 코드

깨끗한 코드를 작성하기 위한 첫번째 기록 장인 정신 장인 정신을 익히기 위해서 첫째, 지식을 습득해야 한다. 둘째, 지식을 몸과 마음으로 체득해야 한다. like 자전거 타기 물리적인 지식, 중력, 마찰력, 각 운동량, 질량 등을 알고 있다고 했을 때 그것들을 이용해서 자전거를 탈 수 있는 것은 아니다. 자전거를 타기 위해서는 넘어지면서 배우고 몸으로 익혀야 한다. 깨끗한 코드도 이와 마찬가지로 원칙을 익힌 후 도전과 실패를 통해 익혀야 한다. 코드의 전망 코드는 기계가 이해하고 실행할 정도로 엄밀하고 정확하고 상세하고 정형화되어야 하기 때문에 사라질 가망은 없다. 코드가 사라지리라 생각하는 사람들은 언젠가 비정형적인 수학이 나오리라 기대하는 수학자와 비슷하다. 고행: wading 나쁜 코드에 발목이 잡..

[Java] Collection - Map

Collection Java Collection의 주요 인터페이스는 List, Set, Map이 있습니다. 인터페이스를 구분하는 가장 중요한 개념은 "순서", "데이터 중복 여부" 입니다. List - 순서가 있고, 데이터 중복이 가능합니다. Set - 순서가 없고, 데이터 중복이 불가능합니다. Map - Key, Value 구조로 데이터가 저장되고, Key는 중복이 불가능하지만 Value는 중복이 가능합니다. Map Key와 Value로 구성된 객체를 저장합니다. 키는 중복될 수 없고, 값은 중복이 가능합니다. Map 인터페이스를 구현한 클래스 종류 HashMap TreeMap LinkedHashMap HashTable HashMap 기본 메서드 HashMap 선언 Map map = new HashMa..

JAVA 2022.09.19

[Java] Collection - Set

Collection Java Collection의 주요 인터페이스는 List, Set, Map이 있습니다. 인터페이스를 구분하는 가장 중요한 개념은 "순서", "데이터 중복 여부" 입니다. List - 순서가 있고, 데이터 중복이 가능합니다. Set - 순서가 없고, 데이터 중복이 불가능합니다. Map - Key, Value 구조로 데이터가 저장되고, Key는 중복이 불가능하지만 Value는 중복이 가능합니다. Set 중복된 요소를 포함할 수 없는 인터페이스입니다. List와 다르게 인덱스를 사용하지 않기 때문에, 인덱스 매개변수가 없습니다. Set 인터페이스의 메서드는 아래와 같습니다. Set 인터페이스를 구현한 클래스 종류 HashSet Linked HashSet TreeSet HashSet 해싱이라..

JAVA 2022.09.19

[Java] Collection - List

Collection Java Collection의 주요 인터페이스는 List, Set, Map이 있습니다. 인터페이스를 구분하는 가장 중요한 개념은 "순서", "데이터 중복 여부" 입니다. List - 순서가 있고, 데이터 중복이 가능합니다. Set - 순서가 없고, 데이터 중복이 불가능합니다. Map - Key, Value 구조로 데이터가 저장되고, Key는 중복이 불가능하지만 Value는 중복이 가능합니다. List List는 데이터를 순서에 맞게 일렬로 구성합니다. 인덱스가 부여되기 때문에 인덱스로 데이터를 검색할 수 있습니다. 그리고 List는 Set과 다르게 중복을 허용합니다. List 인터페이스를 구현한 클래스 종류 ArrayList AttributeList CopyOnWriteArrayLis..

JAVA 2022.09.19

[OS] POSIX 기초

POSIX (Portable Operation System Interface) 이식 가능한 운영 체제 인터페이스의 약자로, 서로 다른 UNIX OS의 공통 API를 정리하여 이식성이 높은 UNIX 응용 프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 인터페이스 규격입니다. 즉, 한 운영체제에서 개발한 프로그램을 다른 운영체제에서도 쉽게 돌아가도록 하는 표준을 말합니다. (소스코드의 호환) 표준 스트림 특정한 프로그래밍 언어 인터페이스 뿐 아니라 유닉스 및 유닉스 계열 운영체제에서 컴퓨터 프로그램과 그 환경 사이에 미리 연결된 입출력 통로를 말합니다. 표준 스트림으로 인해 프로그래머나 프로그램에서 입출력을 사용해야 할 때, 입출력 장치를 연결하기 위한 추가 작업 필요 없이 입출력을 사용할 ..

Backend/OS 2022.09.11

[Spring] JPA Fetch Join

Join Entity에 Join을 걸어도 실제 쿼리에서 Select 하는 Entity는 오직 JPQL에서 조회하는 주체가 되는 Entity만 조회하여 영속화 합니다. 조회의 주체가 되는 Entity만 Select해서 영속화하기 때문에 데이터는 필요하지 않지만 연관 Entity가 검색조건에 필요한 경우에 주로 사용됩니다. Fetch Join 조회의 주체가 되는 Entity 이외에 Fetch Join이 걸린 연관 Entity도 함께 Select 하여 모두 영속화합니다. Fetch Join이 걸린 Entity 모두 영속화하기 때문에 Fetch Type이 Lazy인 Entity를 참조하더라도 이미 영속성 컨텍스트에 들어있기 때문에 따로 쿼리가 실행되지 않아 N+1 문제를 해결할 수 있습니다. Fetch Join..

Spring 2022.09.05

[OS] I/O Management

입출력 관리 컴퓨터에서 연산 작업과 함께 입출력 작업은 중요합니다. 예를 들면 컴퓨터 화면을 보는 작업, 문서를 작성하는 작업 등 대부분이 입출력 작업이기 때문입니다. 마우스, 키보드, 모니터와 같은 다양한 장치들이 컴퓨터에서 잘 동작하도록 하려면 입출력 장치와 컴퓨터 사이에 공통된 인터페이스가 존재해야 합니다. 아래와 같이 입출력 제어기를 통해 메인 메모리와 프로세서와의 상호작용을 위해 시스템 버스에 연결되어 있는 것을 볼 수 있습니다. 입출력 하드웨어의 구성 하드웨어 장치는 케이블을 통하거나, 무선으로 신호를 보내 컴퓨터와 통신을 합니다. 이때 포트를 통해 컴퓨터에 접속하는데 하드웨어 장치의 또 다른 구성요소는 제어기 입니다. 제어기는 포트나 입출력 장치를 제어하는 전자 회로의 집합체이며 많은 입출력..

Backend/OS 2022.09.03

[MySQL] Real MySQL 8.0

쿼리 작성과 연관된 시스템 변수 1. ONLY_FULL_GROUP_BY GROUP BY 절에 포함되지 않은 칼럼이라도 집합 함수의 사용 없이 그대로 SELECT 절이나 HAVING 절에 사용할 수 있습니다. 2. STRICT_TRANS_TABLES 서버에서 INSERT나 UPDATE 문장으로 데이터를 변경하는 경우 칼럼의 타입과 저장되는 값의 타입이 다를 때 자동으로 타입변경을 수행합니다. 예를들어 SELECT * FROM test_table WHERE number_column='100'; ▶ 숫자 속성에 문자열 타입을 입력했을 때 기본적으로 숫자로 변환되기 때문에 이 경우는 문제가 되지 않지만 SELECT * FROM test_table WHERE string_column=100; ▶ 문자열 속성에 숫..

MySQL 2022.08.25
728x90
반응형