아 피자먹고 싶다
안녕하세요.JDragon 입니다.
이전 블로그를 청산?하고...티스토리로 돌아와 글을 쓰려고 합니다. 정적블로그는 신경써야 할게 많아서... 티스토리로 컴백!!
이번 포스팅은 어떤 특정 기술에 대해서? 뭐 이런 주제가 아니고 코딩을 하는데 있어 기본적인 개념에 대해 생각해보는 글이에요.
기능이란 뭘까요
위 질문에 대답이 선뜻 나오지 않았습니다. (Method 요! Function이요! 라고 영어단어를 말 하려다 안했지요...) 어떤 작업을 하기 위한 행위? 일까요?
사실 정확하게 기능이란 무엇이다! 라고 딱 잘라서 말하지는 못할까... 생각합니다. 뭐라 생각하든 자유니까요! 하지만 자신이 가지고 있는, 사용하는 언어로 무엇인지 말은 할 수 있어야 한다고 생각합니다. 제가 생각하는 기능이 무엇인지, 그리고 기능을 구현할 때 고려해야 할 점은 무엇인지에 대해서 얘기해볼게요.
그래서 기능은 뭐냐?
기능은 Input(입력) 과 Output(출력) 으로 이루어진 하나의 단위 라고 저는 생각합니다. 정확하게 말해선 팀장님께 그렇게 배웠지요. 근데 이 문구가 머리에 잘 남더라구요... 기억에 잘 남고 입에 착착 붙는게 중요하기에... 그래서 저는 기능은 입력과 출력이다! 라고 정의하게 되었지요.
위에 그림은 간단한 예를 들어봤어요. Input, Output 그리고 이것과는 별개로 기능 외적인 요인으로 DB변경이 있지요.
DB변경은 부가적인 요소예요. 중요한 것은 기능은! Input 과 Output 이 명확하게 존재해야 한다는거에요.
일반 실선이 기능을 구현하는데 반드시 필요한 Input, Output 이고, 점선은 부가적인 것들이에요.
그러면 기능에 대해서 한번 정리를 해볼까요.
기능은 입력과 출력이 있다.
-
입력
- 기능을 실행하는데 필요한 것 (외적인 요소에서 온다)
- 파라미터 또는 어딘가에서 받는 것(ex:DB)
- 기능을 실행하는데 필요한 것 (외적인 요소에서 온다)
-
출력
- 결과 (외적인 요소로 보낸다)
- 리턴타입
- 결과 (외적인 요소로 보낸다)
이렇게 정의할 수 있을 것 같네요. 출력에서 조심해야 할 것은! 출력을 단순하게 화면에 어떻게 출력할 것이냐? 만 생각해선 절대 안 된다는 겁니다. JSON, HTML 뭐 어떠한 형태로든 출력할 수 있겠죠. 근데 이게 기능이 출력하려는 무언가!? 는 아니라 생각합니다.
JSON, HTML 등등 이런 것들은 출력 수단일 뿐이라 생각합니다.
기능을 정의함에 있어 입력과 출력이 있어야 하는데 화면에 어떻게 출력하는지가 기능의 최종 결과물은 아니지요. 간단한 회원가입의 예에서 생각해보면 회원 가입이라는 기능이 있을때! 어떤 입력을 받고 회원가입의 성공 or 실패라는 결과가 있는겁니다. 성공 or 실패 라는 결과를 json 으로 리턴해줘! 라는 것은 성공,실패 라는 결과를 어떻게 표현해줄거냐 라는 수단일 뿐이라는 겁니다. 화면에 보여지는 거에 얽매이지 않고 이 기능의 진정한 결과가 무엇인지 꼭 생각해보도록 합시다!
기능을 구현할 때 고려해야 할 점?
기능은 상황에 따라 다르게 동작해야 됩니다! 아래의 예를 보시죠.
회원이 이미 존재할 수도 있다! 라는 상황을 고려해서 기능을 구현해야 합니다. 여러 상황을 고려하는 연습을 하면 예외처리도 더 잘할 수 있게 되겠고 좋은 기능? 올바른 기능? 고품질의 기능을 구현할 수 있게 될 겁니다.
간단한 예로
xx = findById(id);
xx.();
이러한 형식의 코드가 있다고 했을 때! xx 가 null 인 상황을 반드시 고려해야 합니다. NPE가 발생하기 때문이죠.
이상으로 마치겠습니다. 티스토리에 작성하는 첫 글인데. 앞으로 더 좋은 글을 쓸 수 있도록 노력하겠습니다~