오늘은 프로그램 코드를 작성할 때 어떻게 구조를 잡아야 아름다운 코드가 될 수 있는지에 대해서 이야기하고자 한다. 프로그램을 처음 접하는 개발자는 어떻게 프로그램을 작성해야 하는지를 생각하게 된다. 프로그램은 언어별 문법에 맞으면 어떤 구조로 작성을 하여도 실행이 된다. 그러나 프로그램 코드는 다른 개발자와 의사소통을 하는 첫 번째 수단이다. 다음 코드를 보자 public void logprint(){ System.out.println("처음 작성") ; int a=5; System.out.println(a);} public void logPrint() { System.out.println("처음작성"); int a = 5; System.out.println(a); } logprint 메서드와 logPr..
프로그래머는 항상 자신의 코드가 정리 잘되어 있어 구조적으로 이쁘고 읽기 쉽게 코드를 작성하기 위해 많은 시간을 할애하여 코드를 작성한다. 이것이 리펙토링이라 생각한다. 서점에 나온 책이나 인터넷 사이트를 검색하다 보면 많은 기법이 있고 어렵다고 생각이 드는데 리펙토링은 자신이 작성한 코드나 다른 개발자가 작성한 코드의 기능을 유지하면서 코드를 구조화(이쁘게) 변경하는 것으로 레거시 시스템을 리펙토링 할때는 알려진 버그가 있어도 수정하지 않고 그대로 코드를 읽기 쉽게 만드는 과정이다. 개발자가 코드를 작성 할때 요구사항을 수집하고 요구사항에 따라서 기능을 정의하고 정의된 기능을 기초로 하여 설계하고 코드를 작성한다. 설계 시 작성한 물리적인 폴더 구조, 클래스, 함수, 메서드(이하 함수라함)의 각 기능을..
프로그래밍을 직업으로 가지고 있는 사람은 평생 학습을 해야 한다. 어떤 분야 어떤 업무를 하느냐에 따라서 맞는 말일수도 있고 틀린 말 일 수고 있다. 그럼 처음 배우는 사람이 어떻게 배우는 것이 좋은 방법인지 이야기하고자 한다. 프로그램을 배우기 위해서 일반적으로 학원에서 배우는 사람, 학교에서 배우는 사람, 온라인 학습 사이트를 통해서 배우는 사람, 혼자 책을 보면서 독학하는 사람등 어떤 것이 바른 방법일까? 모두 바른 방법이다. 어떻게 배우던지 프로그래밍을 하기 위해서는 많은 시간을 투자해야 하고 프로그램 언어뿐만 아니라 프로그램 언어론, 자료구조, 컴퓨터 개론과 같은 프로그램 전공 관련뿐만 아니라 어느 정도의 영어 해석, 수학 등 많은 선 지식이 필요하다. 물론 선 지식을 몰라도 프로그래밍을 할 수..
JAVA 제너릭 함수형 인터페이스(Predicate , Consumer , Function 은 참조 형만 사용할 수 있다. 기본형을 참조형으로 변환(박싱 :boxing), 참조형을 기본형으로 변환(unboxing) 이것을 자동으로 하는 오토 박싱(autoboxing)이라 하는데 Java8에서는 다음과 같은 함수형 인터페이스를 제공한다. 함수형인터페이스 함수디스 기본형 설명 Predicate T->boolen IntPredicate LongPredicate DoublePredicate 기본형을 받은 후 boolean 리턴 Consumer T->void IntConsumer LongConsumer DoubleConsumer 기본형을 받은 후 소비 Function T -> R IntToDoubleFunctio..
자바에서 람다는 메서드로 전달할 수 있는 익명 함수라고 할 수 있으며 이름은 없지만 파라미터, 바디, 반환 형식, 예외를 가지며 다음과 같은 특징이 있다. 람다 표현식은 함수형 인터페이스의 인스턴스(함수형 인터페이스를 구현한 클래스의 인스턴스)라 할 수 있다. 함수형 인터페이스는 디폴트 메서드를 제외한 추상 메서드가 오직 하나인 인터페이스이다. @FunctionalInterface 어노테이션이 붙어 있는 것이 함수형 인터페이스이다. 함수 디스크립터( 람다식(Lambda Expression) 내에서 사용되는 지역 변수는 final이 붙지 않아도 상수로 간주되며, 람다식으로 선언돼 변수명은 다른 변수명과 중복될 수 없다, 1. 람다식 장점 익명 클래스처럼 많은 코드를 구현할 필요가 없어 코드가 간결핟, 읽기..
Code의 일부를 파라미터로 전달하는 기능 하여 기능을 실행하는 것으로 어떻게 실행할 것 인지 결정하지 않는 코드 블록을 의미한다. 3. JAVA 일급객체에서 살펴본 방법이 1차 적인 방법으로 참 또는 거짓을 반환하는 함수를 프리디 게이트(Predicate)라고 한다. 다양성을 적용 해서 JAVA 일급 객체의 소스를 다양한 방법으로 변경합니다. Class 사용 익명 Class 사용 람다 사용 1. Interface 생성 CarCondition Interface의 이름을 CarPredicate로 변경합니다. public interface CarPredicate { boolean test(Car car); } 2. Class 사용 디자인 패턴 중 알고리즘(기능) 울 캡슐화하여 미리 정해 놓은 후 사용시점(런..
일급 객체 first-class object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 인자로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다 즉 다음과 같은 조건을 만족해야 합니다, 변수나 데이타에 할당할 수 있어야 한다. 객체의 인자로 넘길 수 있어야 한다. 객체의 리턴값으로 리턴할 수 있어야 한다 자바 프로그밍 언어는 사용하는 메서드, 클래스는 전달할 수 없는 구조체로 일급 객체가 아니다, 이것을 해결하고자 자바 1.8에서 메서드 참조(Method Reference)를 사용해서 일급 객체로 사용합니다, 자바에서 메서드를 어떤 방법으로 전달할 수 있을까? 자바 1.8 이전은 다음과 같이 작성하였습니다.. public s..

열거형은 자바 1.5 버전부터 추가된 것으로 관련이 있는 상수들의 집합으로 enum사용 시 다음과 같은 장점이 있습니다. 코드가 단순해진다, 가독성이 좋아진다. 상수값의 타입 안전성이 보장된다. - 컴파일 시점에 체크, 인스턴스 생성과 상속 방지 1. 사용 방법 Class처럼 사용 : enum Class 내부에 enum 사용 : 내부 class처럼 enum의 생성자는 private 관련 Method| - valueOf(String) : String값을 enum에서 가져옴 - valueOf(Class String) : 전달된 문자열과 일치하는 해당 열거체의 상수를 반환 - values() : enum의 요소들을 순서대로 enum타입의 배열로 리턴 -> 해당 열거체의 모든 상수를 저장한 배열을 생성하여 반환..