자바를 단지 도구로만 생각하고 이를 더 잘 쓰는걸 jsp, spring 이라고 생각했는데 오히려 자바에 대해서 알아야 하는게 더 깊고 깊다는걸 배웠다. spring의 근간이 되는 기술인 만큼 다른 기술들에도 적용할 수 있고 java는 내 생각보다 더 엄청난 언어임이 틀림없다.

jsp 단에서 "data-id" 라는 태그가 쓰였는데 html5 부터 지원하는 태그라고 한다. 뭐인지 찾아 보곤 하니 그간 name이나 id 처럼 해당하는 속성 전체를 불러와서 그것의 value를 검색하는 방법과 달리 <data-id="title">의 경우 data라는 큰틀에서 key값이 id, value값이 title이 되는 식이었다. 해서 구글링으로 아무리 data-id를 통한 전체 속성에 value 접근을 찾아봐도 나오지 않는 것 우리 소스를 보면 구현해놓은게 있긴 하지만 이는 name, id, class를 하나하나 찾아봐서 해당 값을 가져오는 방식이었다. 조금 시간이 오래 걸리기는 하지만 구현이 가능하다는 것만 알아두고 나는 다른 방식을 사용하기로 결정 

spring 의 세가지 요소 
IOC 컨테이너, AOP, 추상화 계층 
이를 제대로는 모르지만 이렇게라도 알아두는게 좋을것 같아서 일단 적어두고 

새로운 단어를 배웠다. 바로 'Yak shaving' 이는 어떤 행위를 위해서 계속 계속 다른 일을 하다가 결국 밑바닥 부터 하게 되는것을 의미한다고 한다. 이에 대해서는 여러 예시가 있지만 간단히 보자면 시험공부를 시작 하다가 결국 방청소를 하게되는 그런것이 개발에도 그대로 있고 이를 나타내는 단어까지 있다니. (하지만 공감갔던 글 yak shaving은 재밌다.)

객체 지향의 4요소는 
추상화 (클래스/객체) - 모델링 
캡슐화 - 정보은닉
상속 - 재사용/ 확장
다형성 - 사용편의 
아무리 듣고 들어도 낯설고 어렵다. 내가 이를 지키지 않고 객체지향 언어를 사용하고 있기 때문 어서 해당 요소를 적용하며 개발 하는 개발자가 되어야 한다.

설계 5원칙 - SOLID
Single response - 단일 책임 
한가지 클래스 (메서드)는 한가지 책임을 위해 수정 되어야 한다.
Open closed - 개방 폐쇄
확장에 대해서는 열려있지만 변경에 대해서는 닫혀있어야 한다. 
Liskov subtution - 리스코프 치환 
S가 T의 하위형 이라면 속성 변경없이 T -> S 로 치환가능해야 한다. - 4요소중 상속과 깊은 연관 
Interface segregation - 인터페이스 분리 
클라이언트가 자신이 이용하는 메서드에 의존해선 안된다. - SRP와 비슷하지만 추상에 대한 점이 다르다고 한다.
Dependency inversion - 의존 역전
고차원 모듈은 저차원 모듈에 의존하면 안된다. 추상화된 것은 구체적인 것에 의존하면 안된다. 이와 연관있는 기술이 이름에서 느껴지듯이 IOC와 DI다. 하지만 잘 분리해서 기억하고 있어야 한다. 

현재 이클립스 버그 때문인지 serach기능이 되지 않으니 해당 문제를 해결 후 다음에 해결 방법에 대해 기록할 예정이다.

댓글

이 블로그의 인기 게시물

git-receive-pack not permitted on 깃 허브 로그인 관련 문제