전체 글

전체 글

    [Clean Code]클린코드_4_주석

    잘 달린 주석은 그 어떤 정보보다 유용하다. 경솔하고 근거없는 주석은 코드를 이해하기 어렵게 만든다. 오래되고 조잡한 주석은 거짓과 잘못된 정보를 퍼뜨려 해악을 미친다. 사실상주석은 기껏해야 필요악이다. 우리에게 프로그래밍 언어를 치밀하게 사용해 의도를 표현할 능력이 있다면, 주석은 전혀 필요하지 않을 것이다. 우리는 코드로 의도를 표현하지 못해, 그러니까 "실패"를 만회하기 위해 주석을 사용한다. 주석은 언제나 실패를 의미한다. 때때로 주석없이는 자신을 표현할 방법을 찾지 못해 할 수 없이 주석을 사용한다. 프로그래머들이 주석을 엄격하게 관리해야 한다고, 그래서 복구성과 관련성과 정확성이 언제나 높아야 한다고 주장할지도 모르겠다. 하지만 차라리 코드를 깔끔하게 정리하고 표현력을 강화하는 방향으로, 그래..

    [Clean Code]클린코드_3_함수

    함수를 만드는 규칙은 다음과 같다. [ 작게 만들어라 ] 함수는 작을 수록 더 좋다. 이에 대한 정확한 근거나 자료를 제시하기 어렵지만 많은 프로그래머들이 개발을 하며 오래 시행착오 끝에 작은 함수가 좋다고 생각한다고 한다. if/else문 , while문 등에 들어가는 블록은 한 줄이어야 한다. 대게 여기서 함수를 호출한다. 이 말은 중첩 구조가 생길 만큼 함수가 커져서는 안 된다는 뜻이다. 그래야 함수를 읽고 이해하기 쉬워진다. ( switch문은 기본적으로 작게 만들기가 어렵다. switch문을 완전히 피할 방법은 없다..) [ 한 가지만 해라 ] 함수는 한 가지를 해야한다. 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 하는 것이다. 함수가 확실히 '..

    [Clean Code]클린코드_2_의미있는 이름

    프로그래머가 많은 고민을 하는 부분이 바로 이름을 붙이는 것이다. 우리는 변수에도 이름을 붙이고, 함수에도 이름을 붙이고, 인수와 클래스와 패키지에도 이름을 붙이다. 소스파일에도 이름을 붙이고, 소스 파일이 담긴 디렉토리에도 이름을 붙인다. 이처럼 이름을 붙이는 일이 많으므로 이름을 잘 지으면 가독성도 높아지고 용도도 쉽게 파악이 가능해 이름을 잘 짓는 것이 중요하다. 우리들 대다수는 자신이 짠 클래스 이름과 메서드 이름을 모두 암기하지 못한다. 암기는 요즘 나오는 도구에게 맡기고, 우리는 문장이나 문단처럼 읽히는 코드 아미녀 적어도 표나 자료 구조 처럼 읽히는 코드를 짜는 데만 집중해야 한다. 다음에 소개한 규칙 몇 개만 적용해도 코드 가독성이 높아지는것을 확인할 수 있을 것이다. [ 의도를 분명히 밝..

    [Clean Code]클린코드_1_깨끗한 코드

    #깨끗한 코드를 짜야하는 이유 나쁜 코드는 개발 속도를 크게 떨어트린다. 예를 들어 2-3년 넘게 남들이 짜 놓은 나쁜 코드(가독성이 안 좋거나 등등)를 이어받아 프로그램을 짜는 경우 얽히고설킨 코드를 '해독'하는 데에만 시간이 많이 소비될 것이다. 또한 나쁜 코드는 팀 생산성을 떨어트린다. 이를 해결하고자 재설계를 한다고 해도 거기에 따른 시간과 비용이 또 상당할 것이다. 따라서 언제나 코드를 최대한 깨끗하게 유지하는 습관이 중요하다. [ 보이스카우트 규칙 ] 미국 보이스카우트가 따르는 간단한 규칙이 있다. "캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라." 마찬가지로 체크아웃할 때보다 좀 더 깨끗한 코드를 체크인한다면 코드는 절대 나빠지지 않고 시간이 지날수록 코드가 좋아질 것 이다.

    [SQL]DDL (테이블 생성 & 추가 & 수정 & 삭제)

    [SQL]DDL (테이블 생성 & 추가 & 수정 & 삭제)

    📌테이블 생성 테이블을 생성, 변경 및 삭제 할때는 DDL(Data Definition Language)을 사용해야 한다. 테이블을 생성할 때는 CREATE TABLE 문법을 사용한다. 이 구문은 DBMS에 따라 다르기 때문에 각자가 사용하는 DBMS 설명서를 참고해야 한다. 💡일반적으로 테이블 생성하는 방법 CREATE TABLE 생성할 테이블명 ( 열 이름 데이터 형식(크기) NOT NULL, 열 이름 CHAR (10) PRIMARY KEY, 열 이름 CHAR (10) NOT NULL REFERENCES 테이블1 (테이블1 고유키), 열 이름 INTEGER NOT NULL DEFAULT 1, 열 이름 VARCHAR(100) NULL ); 테이블을 만들려면 기본적으로 생성할 테이블명, 그에 속할 열 이..

    [SQL]DML(데이터 삽입 & 수정 & 삭제)

    [SQL]DML(데이터 삽입 & 수정 & 삭제)

    📌 데이터 삽입 (INSERT) 데이터를 삽입하는 종류는 여러 개가 있다. 데이터 전체 행을 삽입하거나 일부만 삽입할 수 있고 SQL 결과문을 삽입할 수도 있다. 데이터 전체 행을 삽입하는 방법은 열 이름을 지정하지 않고 삽입하는 방법과 열 이름을 지정한 후 삽입하는 방법으로 나눌 수 있다. 열 이름을 지정하지 않고 삽입하는 방법은 코딩을 짧게 해도 된다는 장점이 있는 반면 데이터를 삽입하는 값의 순서가 변경될 경우 테이블이 망가질 수 있는 위험이 있다. 그에 반해 열 이름을 지정한 후 행전체를 삽입하는 방법은 열 이름을 지정하기 때문에 코딩을 길게 해야 한다는 단점이 있지만 순서에 따라 값 매칭이 잘되었는지 확인할 수 있고 오류도 적다. 행의 일부분만 삽입할 때도 동일한 문법을 사용한다. 'SELECT..

    SQL 하위 쿼리(Sub-query)

    SQL 하위 쿼리(Sub-query)

    하위 쿼리(Sub-query)란 하나의 SQL문장에 속하는 또 다른 SQL문장으로, 두 번 이상의 질의를 통해 얻을 수 있는 결과를 한 번의 질의로 해결할 수 있다. 하위 쿼리를 사용하면 복잡한 SQL문장도 간단히 만들 수 있고, DBMS의 데이터 처리 속도도 빠르게 향상시킬 수 있다. FROM절의 하위 쿼리 실무에서 하위 쿼리를 사용할 때는 FROM절에서 크게 두 가지의 용도로 나눌 수 있다. 첫 번째는 조건에 맞는 대상자를 선정한 후 요약할 때 사용되고, 두 번째는 조인할 때 사용된다. 첫 번째 용도로 하위쿼리를 사용할 때는 하위 쿼리를 작성한 후 테이블 별칭을 꼭 주어야 한다. 이때 테이블 별칭을 주지 않으면 에러가 발생한다는 점이다. 테이블 별칭을 줄 때 AS 키워드를 사용해도 되고 생략해도 된다..

    SQL 테이블 합치기 (조인과 집합)

    SQL 테이블 합치기 (조인과 집합)

    조인(JOIN): 열(Column) 합치기 내부 조인(INNER JOIN) 내부조인은 `교집합`이라 생각하면됩니다. 내부 조인은 두 개 이상의 테이블에서 관련된 데이터를 결합하여 검색하는데 사용되는 조인 유형입니다. 내부 조인은 조인 조건에 맞는 행만 반환하며, 조인 조건에 맞지 않는 행은 제외됩니다. 내부 조인을 하는 방법은 다음과 같이 두 가지가 있습니다. 1. FROM / WHERE SELECT column1, column2, ... FROM table1, table2 WHERE table1.column = table2.column; 2. INNER JOIN ⭐ ⭐ ⭐ SELECT column1, column2, ... FROM table1 (INNER) JOIN table2 ON table1.co..

    SQL 문자, 숫자, 날짜, COUNT, CASE WHEN, 데이터의 그룹화

    SQL 문자, 숫자, 날짜, COUNT, CASE WHEN, 데이터의 그룹화

    SELECT 그룹화할 열 이름1, 집계 함수 FROM 테이블명 WHERE 조건절 GROUP BY 열 이름1 HAVING 집계 함수 조건 ORDER BY 열 이름; -- '특정한 테이블에서 특정한 조건을 만족하는 데이터를 추출한 후 특정한 조건을 만족한 -- 그룹화된 특정 열 및 집계 함수를 나타내라'는 뜻이다. 문자 함수 함수 설명 함수 설명 LOWER 모든 문자를 소문자로 변환 RTRIM 문자열 오른쪽 공백을 잘라낸다. UPPER 모든 문자를 대문자로 변환 LTRIM 문자열 왼쪽 공백을 잘라낸다. INITCAP 첫글자만 대문자,나머지 소문자 TRIM 문자열의 양쪽을 잘라낸다. LENGTH 문자의 길이를 나타낸다. REPLACE 특정 문자열을 다른 문자열로 대체한다. SUBSTR 문자 값 중 원하는 길이..

    SQL SELECT, WHERE, ORDER BY, IN, LIKE, TRIM

    SQL SELECT, WHERE, ORDER BY, IN, LIKE, TRIM

    SQL 문법 요약 및 작성 특징 SELECT [DISTINCT] 열 이름 [or 별칭(alias)] FROM 테이블 이름 [WHERE 조건식] [ORDER BY 열 이름 [ASC or DESC]]; -- GROUP BY와 HAVING에 대해서는 다음에 설명하도록 하겠습니다. -- 이런게 있구나 정도로만 보시면 됩니다. SELECT 그룹화할 열 이름1, 집계 함수 FROM 테이블명 WHERE 조건절 GROUP BY 열 이름1 HAVING 집계 함수 조건 ORDER BY 열 이름; ※참고 SQL은 소문자와 대문자를 구분하지 않는다. SELECT를 select라고 입력해도 결과값은 차이가 없다. 하지만 복잡한 SQL문장을 작성할 때 보기 쉽게 표현하기 위해 SELECT같은 키워드,명령어는 대문자로 입력하고 열..

    SQL 데이터베이스(DB), SQL이란?

    SQL 데이터베이스(DB), SQL이란?

    데이터베이스의 정의 데이터베이스(DB)란 구조적인 방식으로 관리되는 데이터의 집합을 이야기한다. 즉, 서로 연관된 정보의 중복을 최소화하여 한곳에 저장함으로써 다수의 사용자가 필요한 정보에 효율적으로 접근할 수 있게 한 정보의 집합체이다. 또한 데이터베이스는 실시간 접근과 동시 공유가 가능하다. 데이터베이스의 체계적인 관리는 데이터베이스 관리 시스템(DBMS)을 통해 이루어진다. DBMS는 데이터를 정리하고 보관하기 위한 용도로 사용된다. 이를 위해 데이터 생성, 수정, 삭제, 검색 등의 기능을 수행한다. 대표적인 DBMS는 Oracle, MySQL, PostgreSQL, MongoDB 등이 있다. DBMS(데이터베이스 관리 시스템) 특성 DBMS는 실시간 접근성, 계속적인 변화, 동시 공용, 내용에 의..

    [Java] 스트림(stream)

    [Java] 스트림(stream)

    📌스트림이란? 많은 수의 데이터를 다룰 때, 컬렉션이나 배열에 데이터를 담고 원하는 결과를 얻기 위해 코드를 작성하면 너무 길고, 재사용성도 떨어진다. 이런 문제를 해결하기 위해 만든 것이 스트림(stream)이다. 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았다. 데이터소스를 추상화하였다는 것은, 데이터 소스가 무엇이던 간에 같은 방식으로 다룰 수 있게 되었다는 것과 코드의 재사용성이 높아진다는 것을 의미한다. 즉, 스트림(Stream)은 컬렉션(배열 포함)의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다. 간단한 예를 하나 보여주도록 하겠다. 뒤에서 자세히 설명할 것이니 그냥 보기만 해도 된다. //기존 Iterator List..

    [Java] 람다식 (Lambda expression)

    [Java] 람다식 (Lambda expression)

    📌람다식 (Lambda expression) 객체 지향 프로그래밍이 나오기 전부터 Lisp 또는 Scheme와 같은 함수적 프로그래밍 언어들이 있었다. 현업에서는 호응을 얻지 못하였지만, 빅데이터가 각광받으면서 이를 프로그램적으로 다룰 방법이 필요해짐에 따라 멀티 코어를 활용한 분산처리와, 병렬화 기술이 필요하였다. 즉 이제 하나의 CPU안에 다수의 코어를 삽입하는 멀티 코어 프로세서들이 등장하면서 일반 프로그래머에게도 병렬화 프로그래밍에 대한 필요성이 생기기 시작했다. 이러한 추세에 대응하기 위해 Java 8에서는 병렬화를 위해 컬렉션(배열, List, Set, Map)을 강화했고, 이러한 컬렉션을 더 효율적으로 사용하기 위해 스트림(Stream)을 강화했다. 또 스트림을 효율적으로 사용하기 위해 함수..

    [Java]Java.lang 패키지 (Object, System, Class, String, String, Pattern, Arrays, Math, Wrapper)

    [Java]Java.lang 패키지 (Object, System, Class, String, String, Pattern, Arrays, Math, Wrapper)

    📌java.lang 패키지 클래스 용도 Object -자바 클래스의 최상위 클래스로 사용 System -표준 입력 장치(키보드)로부터 데이터를 입력받을 때 사용 -표준 출력 장치(모니터)로 출력하기 위해 사용 -자바 가상 기계를 종료시킬 때 사용 -쓰레기 수집기를 실행 요청할 때 사용 Class -클래스를 메모리로 로딩할 때 사용 String -문자열을 저장하고 여러 가지 정보를 얻을 때 사용 StringBuffer, StringBuilder -문자열을 저장하고 내부 문자열을 조작할 때 사용 Math -수학 함수를 이용할 때 사용 Wrapper (Byte, Short, Character, Integer, Float, Double, Boolean -기본 타입의 데이터를 갖는 객체를 만들 때 사용 -문자열을..

    IntelliJ Windows 단축키

    IntelliJ Windows 단축키

    단축키들 찾기 : Shift + Ctrl + A 로 단축키들을 찾을 수 있다. GENERAL -Alt + #[0-9] : 각 단추키에 해당하는 도구창을 연다. ( ex. Alt+1 : 프로젝트 도구창을 토글할 수 있다.) -Esc : 열린 도구창에 상관없이 에디터에 다시 포커스가 위치하게 하는 단축키이다. -space : 프로젝트 창 미리보기 (Alt+1 을 눌러 프로젝트 도구창을 열고 클래스 파일을 미리보고 싶은 경우) -ctrl + shift + F12 : 에디터 창 최대로 키우기 -ctrl + tab : 에디터 창 이동하기 -최근 파일 목록 열기 : Ctrl + E Editing -단어별 이동 : ctrl + ←,→ -라인 시작/끝 이동 : home , end -페이지 위/아래 : page up, ..