본문 바로가기

전체 글322

JSX const element = Hello, world!; 자바스크립트의 확장 문법이다. 문자열도 HTML도 아니며, 템플릿 언어가 아닌 자바스크립트를 기반으로 하고 있다. JSX는 리액트의 element를 만든다. 리액트에서 JSX를 사용하는 이유 리엑트는 렌더링 로직이나 다른 UI 로직과 본질적으로 결합되어 있으며, 이벤트 처리방법, 시간에 따른 변경 방법, 데이터 표시 등을 포함하고 있다. 리엑트는 별도의 파일에 마크업과 로직을 넣어 기술을 인위적으로 분리하며, 이를 모두 포함하는 컴포넌트라 불리는 느슨한 연결 유닛으로 관심사를 분리한다. 리엑트에서 JSX사용을 필수로 하지 않지만 자바스크립트 코드 내부의 UI로 작성시 시각적으로 도움을 줄 수 있다. 간단한 표현식 function formatName(.. 2020. 1. 21.
이펙티브 자바 8장 - 메서드 매개변수가 유효한지 검사하라 매개변수 검사를 제대로 하지 못하면 원자성을 어기는 결과를 낳을 수 있다. 그렇기에 던지는 예외를 자바독 태그를 이용하여 문서화 시켜야 한다. java.util.Object.requireNonNull 메서드는 유연하고 사용하기도 편하기에 수동으로 null 검사를 하지 않아도 된다. 메서드는 최대한 범용적으로 설계하나 머서드가 건네받은 값으로 무언가 제대로 된 일을 할 수 있다면 매개변수 제약은 적게 만드는 것이 좋다. 적시에 방어적 복사본을 만들라 package effectivejava.chapter8.item50; import java.util.*; // 코드 50-1 기간을 표현하는 클래스 - 불변식을 지키지 못했다. (302-305쪽) public final class .. 2020. 1. 6.
이펙티브 자바 - 7장 람다와 스트림 익명 클래스보다는 람다를 사용하라 타입을 명시해야 코드가 더 명확 할 때만을 제외하고는 람다의 모든 매개변수 타입은 생략해야한다. 이후 컴파일러가 "타입을 알 수 없다" 라는 오류를 낼 경우에만 해당 타입을 명시하면 된다. 람다의 단점은 이름이 없으며 문서화를 하지 못하기에 코드 자체로 동작이 명확히 설명되지 않거나 코드줄 수가 많아 지는 경우에는 람다를 사용하지 말아야 한다. (세줄이 넘어가면 사용하지 않는 것이 좋다) 람다는 자신을 참조 할 수 없기때문에 람다에서 this 키워드는 바깥 인스턴스를 가리키며, 익명에서의 this는 익명 클래스의 인스턴스 this를 가르킨다. 익명 클래스는 함수형 인터페이스가 아닌 타입의 인스턴스를 만들때 만 사용하는 것이 좋다. 람다보다는 메서드 참조를 사용하라 메서드.. 2020. 1. 3.
이펙티브 자바 6장 - enum 2 명명 패턴보다 애너테이션을 사용하라 명명 패턴은 효과적인 방법이지만 단점을 가지고 있다. 첫째, 오타에 대한 주의가 필요하다. 둘째, 올바른 프로그램 요소에서만 사용된다는 보증할 방법이 존재하지 않는다. 셋째, 프로그램 요소를 매개변수로 전달할 마땅한 방법이 없다. 마킹 에너테이션 : @Test 애너테이션과 같은 애너테이션은 아무 매개변수 없이 단순히 대상에 마킹하는 것을 가리킨다. 자바 8에서는 여러 개의 값을 받는 애너테이션을 다른 방식으로도 만들수 있다. 배열 매개변수를 사용하는 대신 애너테이션에 @Repeatable 메타애너테이션을 다는 방식이며, @Repeatable을 단 애너테이션은 하나의 프로그램 요소에 여러번 달 수 있다. 하지만 주의할 점이 있다. 첫번째, @Repeatable을 단 애너.. 2020. 1. 3.