모르지 않다는 것은 아는것과 다르다.

전체 글 224

@SuppressWarnings

@SuppressWarnings 란? 컴파일러 경고를 사용하지 않도록 설정해주는 기능이다. intellij 에서 노란색으로 경고 표시줄이 나타나는 경우 그 경고표시를 무시할 수 있다. 대신 주석으로 그 이유를 명시해 주는 것이 좋다. 두 가지의 종류를 같이 사용할 때는 @SuppressWarnings({"unused", "unchecked"})처럼 객체 형식으로 묶어서 사용한다. 속성 all : 모든 경고 cast : 캐스트 연산자 관련 경고 dep-ann : 사용하지 말아야 할 주석 관련 경고 deprecation : 권장되지 않는 기능과 관련된 경고 fallthrough : switch문에서 break 누락 관련 경고 finally : 반환하지 않는 finally 블럭 관련 경고 null : null..

Java 2022.05.30

SQL

개요 QueryDSL 로 쿼리를 짜던중, 기본적인 SQL 쿼리 문법을 정확히 숙지하고 있지 않은 것 같아, SQL 쿼리 문법을 공부해 보려고 한다. 그룹 제어 SELECT [GROUP BY 에서 사용된 컬럼명들, 집계함수] FROM [테이블명] WHERE [조건들] GROUP BY [컬럼명들] HAVING [GROUP BY 절에 해당하는 조건들] 위의 내용은 where 절에서 만족하는 데이터들을 그룹핑하고 having 절로 조건을 걸어서 데이터를 가져온다. select 절에 사용될 컬럼들은 group by 에 명시된 컬럼들만 사용할 수 있다. group by 에 명시된 컬럼 외에 다른 컬럼을 사용하고 싶다면? -> 집계함수를 통해서 사용할 수 있다. where 절과 having 절의 가장 큰 차이점은 h..

Database 2022.05.30

이펙티브 자바 2장 (객체 생성과 파괴)

[아이템 1] 생성자 대신 정적 팩터리 메서드를 고려하라 장점 이름을 가질 수 있다. public class Bike { private int wheelCount; private String color; private Bike(int wheelCount, String color) { this.wheelCount = wheelCount; this.color = color; } public static Bike createBike(String color) { return new Bike(2, color); } public static Bike createTricycle(String color) { return new Bike(3, color); } } 매번 인스턴스를 새로 만들지 않아도 된다. public ..

Books 2022.05.30

생성 패턴 (디자인 패턴)

생성패턴 객체를 생성하는 것과 관련된 패턴으로, 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화 하고, 코드의 유연성을 높여 준다. 종류 Factory Method Singleton Prototype Builder Abstract Factory Chaining Factory Method Pattern 인스턴스 생성과 관련된 패턴이다. 상위 클래스는 객체를 생성하기 위한 인터페이스를 정의한다. 하위 클래스에서는 어떤 클래스의 인스턴스를 생성할지 결정한다. 생성과 관련된 동일한 메서드는 상위 클래스에서 처리한다. 결론적으로 상황에 따라 다양한 인스턴스를 생성할 수 있게 도와주는 패턴이다. class diagram Product: 팩토리 메소드가 생성하는 객체의 인터페이스를 정의한다. Concrete..

객체지향 2022.05.15

행위 패턴 (디자인 패턴)

행위 패턴 반복적으로 사용되는 객체들의 상호작용을 패턴화한 것으로, 쿨래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 제공한다. 행위 패턴은 행위 관련 패턴을 사용하여 독립적으로 일을 처리하고자 할때 사용 종료 Strategy Template Method Observer Chain of responsibility Interpreter Iterator Visitor Command Mediator State Memento Strategy Pattern 정책이나 알고리즘을 교체하여 사용한다. 보통 실무에서 많이 사용되는 패턴이다. 같은 메서드를 경우에 따라 다르게 구현해서 사용하는 방식이다. 다양한 알고리즘이 존재하면 이들 각각을 하나의 클래스로 캡슐화하여 알고리즘의 대체가 가능하도록 한다. cla..

객체지향 2022.05.15

구조패턴 (디자인 패턴)

구조 패턴 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램 구조를 설계하는데 활용 될 수 있는 패턴 클래스, 객체들의 구성을 통해서 더 큰 구조를 만들 수 있게 해준디. 큰 규모의 시스템에서는 많은 클래스들이 서로 의존성을 가지게 되는데, 이런 복잡한 구조를 개발하기 쉽게 만들어주고, 유지 보수하기 쉽게 만들어 준다. 종료 Decorator Adapter Bridge Composite Facade Flyweight Proxy Decorator Pattern 작식과 실제 내용을 동일시 하는 패턴이다. 어떤 객체에 여러 기능을 추가해야될 경우, 보통 상속을 생각하는 경우가 많다. 만약 자잘한 기능들이 많아 진다하면, hierarchy가 복잡해지고 지저분해지는 경우가 있다. 예를들어, 상위클래스에 어떤기..

객체지향 2022.05.15

클린코드 10장

개요 이번 장에서는 클래스를 깨끗하게 짜는 방법을 공부한다. 클래스 체계 클래스를 정의하는 표준 자바 관례에 따르면, 아래와 같은 순서로 클래스를 정의한다. 정적 공개 상수(static public final) 정적 비공개 상수(static private final) 정적 비공개 변수(static private) 비공개 인스턴스 변수(private) 공개 함수(public method) 즉, 추상화 단계가 순차적으로 내려간다. 캡슐화 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫다. 때때로 테스트를 위해서 private method나 변수를 protected로 공개해야 할 경우가 있다. 하지만 그 전에 비공개 상태를 유자할 방법을 강구해야한다. 캡슐화를 풀는것은 언제나 최후의 수단이다. 클래스는 ..

Books 2022.04.30

클린코드 9장 (단위 테스트)

단위 테스트 단위 테스트는 모듈(클래스) 단위로 정상적으로 작동하는지 모든 메소드에 대해 정상적으로 작동하는지 테스트하는것이다. 하지만 많은 프로그래머들이 제대로 된 테스트 케이스를 작성해야한다는 중요한 사실을 놓쳐버린다. TDD 법칙 세 가지 첫 번째 법칙: 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 두 번째 법칙: 컴파일을 실행하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 세 번째 법칙: 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 깨끗한 테스트 코드 유지하기 테스트 코드를 작성한다고 작성하지 않을때 보다 무조건 좋은것은 아니다. 테스트 코드를 깨끗하게 짜는 것이 중요하다. 깨끗하게 코드를 짜지 않는다면 새 버전을 출시 할 때마다 팀이 테스..

Books 2022.04.30

클린코드 8장

개요 개발을 하면서 모든 기능을 직접 개발하는 경우는 거의 불가능이다. 때때로는 패키지를 사기도하고, 오픈 소스를 사용하는 경우도 많다. 이번 장에서는 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교를 살펴보려고 한다. 외부 코드 사용하기 인터페이스 제공자와 인터페이스 사용자 사이의 경계를 정확히 파악하는 것은 중요하다. 패키지 제공자는 다양한 환경에서 고객의 요구사항을 충족시키기 위해서 적용성을 최대한 넓히려고 노력한다. 반면에 사용자는 자신의 요구에 집중할 수 있는 인터페이스를 원한다. 정리 하자면, 제공자는 폭넓게 제공하고 사용자는 자신의 요구사항에 맞는(폭 좁게) 기능을 제공받기를 원하기 때문에 이 둘간의 간극으로 인해서 문제가 생길 소지가 있다. 외부 코드의 대표적인 예시 -> java.util..

Books 2022.04.23

클린코드 6장 (객체와 자료구조)

개요 이번 장에서는 객체와 자료구조의 차이를 설명한다. 또한 변수를 비공개(private) 으로 정의하는 이유, 많은 프로그래머가 getter 와 setter 를 공개(public)해 비공개 변수를 외부로 노출하는 이유에 대해서 설명한다. 추상화 추상화란 무엇일까? 컴퓨터 과학에서 추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다. 즉, 추상화란 자료에 대한 핵심적인 부분을 간추려 내는 것을 말한다. 추상화를 통해서 개발자(사용자)는 세세한 구현 부분을 몰라도 기능을 사용할 수 있게 하는 것이다. 자료 추상화 먼저 아래와 같은 코드가 있다고 해보자 public class Point { public double x; public double y; } 위의 ..

Books 2022.04.23