회사에서 진행하는 모델에 관한 세미나를 듣고 내용을 정리하고자 함. (1시간 가량 진행)
중간중간 개인 의견 들어갈 수 있음.
1. 기능
기능이란 사용자 <-> 시스템 간의 상호작용
Input -> 기능 -> Output 으로 간단하게 말하면 Input 과 Output 이 키포인트라고 할 수 있음.
Input과 Output 는 각각 2가지가 있을 수 있음.
- Input
- 파라미터
- DB 같은 곳에서 들어오는 정보 (이 부분은 이해가 갈 듯하면서 뭔가 파라미터 보다는 개념적인 느낌이 들었기에 확실하게 이해가 되진 않았던 부분)
- Output
- return
- 직접적인 return 보다는 한 행위로 인해 실행되는 결과? (예를 들면, 1.의 return 은 성공,실패 등의 상태값이 될 수 있고, 2.는 행위라고 생각됨)
기능은 상황에 따라 다르게 존재 혹은 동작할 수 있음.
2. 역할, 책임
High Cohesion
Low Coupling
(정처기 한창 공부할 때 기억나는 High Chesion, Loose Coupling 의 개념)
저 두 단어면 다 설명이 됨. -> 결과적으로 기능 수정이나, 유지보수가 용이해짐.
기능에는 여러 하위 기능이 있을 수 있으며, 기능에 하위 기능을 도출하는 연습을 많이 해야 함.
물론 처음에는 잘 보이지 않고, 크기가 큰 클래스 혹은 메소드 일 수록 쪼개기가 어렵다. (메소드 추출 방식 등..)
메소드 추출을 하다보면 크기가 오히려 커지고, 구조가 복잡해질 수 있다. (이 부분은 공감하는 부분이고 실제로 경험.. 하면서도 이게 맞는건가 의구심이 든 적도 있음)
역할, 책임에 대해서는 객체지향 원리랄까 그 부분이 생각나는 부분이었음. (단일책임원칙, 캡슐링 - 캡슐링이 맞던가..)
이런 자리를 회사 내부에서 업무 시간에 갖는다는 것은 좋은 것 같다.
잘 응용해서 반푼이가 아닌 멀쩡한 개발자
가 되도록…