Program Language/java 6

객체지향 생활체조 8, 일급 컬렉션이란

이건 일급 컬렉션을 적용하시면 좋을 것 같아요. 우테코 프리코스를 하면서, 뜨거운 감자🥔였던 일급컬렉션 도대체 이게 뭐길래... 객체지향 생활체조 원칙에서 수도없이 강조하고 있는 이 내용을 다뤄보고자 한다. 일급 컬렉션(First Class Collection) 소트웍스 앤솔로지의 객체지향 생활체조 파트의 규칙 8에서 언급된 내용으로 다음과 같은 규칙을 적용하는 것을 목표로 하고 있다. - 콜렉션을 포함한 클래스는 반드시 다른 멤버 변수가 없어야 한다. - 각 콜렉션은 그 자체로 포장돼 있으므로 이제 콜렉션과 관련된 동작은 근거지가 마련된셈이다. - 필터가 이 새 클래스의 일부가 됨을 알 수 있다. - 필터는 또한 스스로 함수 객체가 될 수 있다. - 또한 새 클래스는 두 그룹을 같이 묶는다든가 그룹의 ..

프로젝트, 패키지, 메소드, 클래스 네이밍 규칙

다들 자바 프로젝트를 하면서 한번 쯤은 혹은 여전히 고민하고 계실 네이밍 규칙 Tip을 공유합니다. 공통 대소문자가 구분되며 길이에 제한이 없다. 예약어를 사용해서는 안 된다. 숫자로 시작해서는 안 된다. 특수문자는 '_' 혹은 '$'만 허용한다. 파스칼 표기법(PascalCase)과 카멜 표기법(camelCase)을 사용한다. 반의어는 반드시 대응하는 개념으로 사용해야 한다. 1. Project(프로젝트) 대/소문자 구분없이 시작 가능하다. 대문자 사용을 권장한다. 2. Package(패키지) 패키지명은 대소문자를 모두 허용 하지만 클래스명과 쉽게 구분하기 위해서 소문자로 하는 것을 원칙 으로 하고 있다. 표준 패턴을 따른다. Ex) [com].[Company].[Project].[toppackage]..

객체지향을 위한 생활체조, 클린코드를 지향합니다.

객체지향언어를 가장 객체지향스럽게 쓰기위해서 아래와 같은 노력이 필요하다. - 익숙하지 않더라도 의식하며 적용해보자 한 메서드에 오직 한 단계의 들여쓰기(indent)만 한다. for 문 내부에서 if 문이 포함되는 순간 2 indent 가 된다. else 예약어를 쓰지 않는다. 모든 원시 값과 문자열을 포장(VO)한다. 한 줄에 점을 하나만 찍는다. 줄여 쓰지 않는다(축약 금지). 모든 엔티티를 작게 유지한다. 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않 는다. 일급 컬렉션을 쓴다. 무의미한 getter/setter/프로퍼티를 쓰지 않는다. Getter 대신 메시지에 직접 보내기 https://tecoble.techcourse.co.kr/post/2020-04-28-ask-instead-of-g..

정확히 모르고 쓰면 사수한테 등짝 스매시 맞는 Thread, 당신도 모르는 사이 쓰고 있었다?

자바를 처음 공부하게 되면, 마지막 즈음에 배우게 되는 Thread라는 개념이 있다. 취업을 하고, 실무에서 spring, spring boot를 다루며 직접적으로 Thread라는 코드 본 것은 약,, 1-2번? 이었던 것이었다. 분명 자바 배울 때 배웠던 개념인데 실무에서는 별로 중요하지 않은것인가? 하는 - 이상한 호기심이 생겼다. Thread? 그거 왜 씀? 자바에서 여러가지 일을 동시에 처리하기 위해 사용한다. 저는 멀티가 안되는 사람이라... 한 번에 한가지 일 밖에 못하지만,... 컴퓨터는 똑똑하니까 한 번에 여러가지 일을 하면 당연히 효율적이잖아요? ◠‿◠ 들어가기 전에... Thread를 알아보기 전에 꼭 알아야 더 잘 Thread를 이해할 수 있는 Process를 먼저 알고 갑시다.ᐟ.ᐟ..

지금까지 당연하게 쓰던 Java8, 함수형 프로그래밍으로 다시 이해하기

자바 프로그래밍은 익숙하지만 Java 버전에 대해서는 무지했던 것 같다. 아무생각없이 안정화된 버전을 사용하고, 막상 해당 버전에서 갖는 특성을 이해해볼 생각은 하지 않았다. 그럼 Java8은 어떤 특징이 있을까? Lambda Expression java8 부터는 람다표현식(람다식)을 지원합니다. 아마도 java8 이전버전을 사용하시던 분이라면 람다식이 익숙하지 않으실 수 있는데 사실 람다식, 또는 람다함수는 java8에서 처음 나온 개념이 아닙니다. 람다식은 수학 람다 계산법에서 사용된 식으로 프로그래밍 언어로서는 LISP에 첫 도입이 되어 이후 C#, Scala, Python 등 현재는 대부분의 언어에서 지원하고 있습니다. 람다식은 익명함수를 지칭하는 용어로서 말 그대로 선언되어있지 않은 함수를 자체..

인터페이스 네이밍은 어떻게 해야할까?

개발을 하다보면, service를 인터페이스로 만들어주고 implements해서 사용할 때가 많다. 그러나, 어느샌가부터 인터페이스를 만들고 단일 구현체를 만들어 기계처럼 코드를 작성해왔다는 생각이 들며 포스팅을 정리하게 되었다. 인터페이스 구현체 Impl 접미사는 지양해야한다 헝가리안 표기법의 잔재 학교나 단순한 코드 개발 등 생각보다 꽤 많은 곳에서 아직까지 이런 layout을 본 적이 있을 것이다. 인터페이스를 구현한 구현체에는 Impl 접미사가 붙은 걸 볼 수 있다. 이는 헝가리안 표기법의 잔재로, 지양해야 하는 표기법이다. 인터페이스 네이밍 방법 인터페이스를 네이밍할 때는 인터페이스의 이름을 그 의미 자체에 따라 지어야 한다. 예를 들어 전진go()), 후진(back()), 현재 위치 반환(ge..