내가 본격적으로 집을 떠나 자취로 하기로 결정한 것은 지금의 회사(랩이오사)에 입사를 하고 나서 불과 사흘이 지났을 때였다. 본래 나는 집에서 통근을 하는 것을 염두에 두었다. 왕복 4시간에 달하는 긴 거리지만 회사는 내 출신 모교의 바로 앞에 있는 건물에 위치해 있고 4년 내내 다녔던 길이기 때문에 충분히 할 수 있을 거라고 생각했다. 자취를 하는 것도 물론 생각 안해본 것은 아니나, 부담스러운 월세방보다는 고시원이나 쉐어하우스를 알아볼까 하는 생각이 들었다.

입사 사흘 째에 집으로 돌아가 침대에 누워 모교의 커뮤니티 사이트를 살펴보던 중 불과 40분 전에 올라온 글을 보았다. 월세방을 양도한다는 내용이었다. 글쓴이의 계약기간이 나의 첫 계약기간과 정확히 일치하고, 사진으로 보이는 것에 비해 월세가 꽤 저렴했다. 그때 뭔가에 홀린 듯 글쓴이에게 글에 적혀있는 연락처로 바로 문의를 드렸다.

 

다음 날 아침 출근하는 도중 집을 보러 와도 된다는 연락을 받았다. 당일 저녁에 약속을 잡고 회사에서 퇴근하자마자 집을 보러 갔다. 여자분의 방이었기 때문에 서랍을 열어보는 등의 행동은 할 수 없었지만 전체적으로 혼자 살기에는 꽤 깔끔하고 넓은 방이었다. 집에 돌아가면서 큰 고민에 빠졌다. 예정에도 없던 자취를 해야하나 싶으면서도 이 곳에서 내 첫 커리어를 시작했으면 좋겠다는 생각이 들었다.

 

돌아가는 버스 안에서 전화로 부모님을 설득했다. 그리고 나서 글쓴이에게 주말에 계약을 하고 싶다는 의견을 전달했고, 다음 날 바로 부동산에 가서 임대차 계약을 했다. 이삿날은 그 다음 날인 일요일로 결정했다.

 

그렇게 나의 첫 자취생활은 전격적이고 급박하게 시작되었다.

'글쓰기 > 자취일기' 카테고리의 다른 글

나'도' 혼자 산다: 0화  (0) 2021.09.27

메소드


클래스의 일원, 메소드

자바에서의 클래스는 멤버로 속성을 표현하는 필드(field)와 동작을 표현하는 메소드(method)를 가집니다. 이 글에서 소개할 개념은 바로 클래스의 일원인 메소드(method)입니다. 자바의 메소드는 다른 언어에서 이야기하는 함수(function)과 같은 개념으로 볼 수 있습니다. 그러나 자바는 객체지향 언어이므로, 메소드를 클래스 내에서 작성하고 사용합니다.


메소드란 무엇인가?

메소드는 어떠한 특정 작업을 수행하기 위한 명령문의 집합입니다. 메소드를 사용하기 위해서는 정의가 필요하고, 또 정의한 메소드를 호출하는 작업이 필요합니다.
정의란 메소드가 실행하는 특정 작업을 작성하는 것이고, 호출이란 정의된 메소드를 실행하는 것입니다.

메소드를 왜 쓰는가?

메소드를 정의하고 호출하여 사용할 때 얻을 수 있는 이점은 다음과 같습니다.

  1. 불필요하게 중복되는 코드의 반복적인 프로그래밍을 피할 수 있습니다. 이렇게 함으로서 코드의 가독성이 좋아집니다.
  2. 코드에 문제가 생길 경우 문제가 되는 메소드만 수정하면 됨으로써 유지보수에 도움이 됩니다.

우리가 흔히 알고있는 System.out.println() 역시 메소드로서 미리 정의된 메소드를 호출하는 것입니다.


메소드의 구조와 정의

자바의 메소드 구조를 설명하기 위해 다음과 같은 예시를 준비했습니다.

자바의 메소드는 크게 메소드 헤더메소드 바디로 나뉩니다. 이는 선언부실행 블록으로도 불립니다.
각각에는 다음과 같은 정보가 들어갑니다.

메소드 헤더(선언부)

수정자(Modifier)
수정자 혹은 제어자라고 하며, 해당 메소드의 메모리 할당 속성, 접근 권한을 등을 결정합니다. 위의 예시의 경우 public이므로 해당 메소드가 소속한 클래스를 인스턴스화하여 자바 프로젝트 어느 곳에서든 호출이 가능한 메소드이다.

 

반환값 자료형(Return Value Type)
메소드가 호출의 결과를 반환할 때의 반환값의 자료형을 결정합니다. 메소드에 따라 반환값이 있을 수도 있고 없을 수도 있습니다. 그러나 자료형이 명시되어 있다면 반드시 호출한 곳으로 돌려줄 값이 있어야 합니다.
반환할 값이 없다면 void로 명시합니다.

 

메소드 이름(Method Name)
해당 메소드를 식별할 수 있는 이름입니다. 자바에서는 다음과 같은 사항에 주의하면 됩니다.

  • 숫자로 시작하면 안 되며, $와 _를 제외한 특수 문자를 사용하지 말아야 한다.
  • 관례적으로 메소드명은 소문자로 작성하고, 서로 다른 단어가 혼합된 이름이라면 뒤이어 오는 단어의 첫머리 글자는 대문자로 작성한다. (이 규칙은 camelCase라는 명칭으로도 불린다.)

매개변수(Parameters)
메소드 호출 시, 메소드가 기능을 수행할 때 필요한 값을 전달하기 위해 필요한 변수입니다. 메소드를 호출할 때 전달된 값은 인자(Argument)라고 합니다.
전달할 값이 없다면 빈칸으로 놔 둡니다.

메소드 바디(실행 블록)

반환값(Return Value)
메소드가 기능을 수행한 후 반환하는 값입니다. 반환값의 자료형이 void일 경우 return은 생략됩니다. (반드시 생략되는 것은 아닙니다.)


메소드의 동작

위의 내용을 미루어 보아 메소드의 동작은 다음과 같습니다.

  1. 미리 정의한 메소드의 이름으로 메소드를 호출하고, 호출할 때 입력값으로 인자를 전달합니다.
    1. 매개변수가 정의되지 않았을 경우 빈칸으로 둡니다. 예시) sum();
  1. 매개변수를 통하여 입력값을 받고, 미리 정의한 내용대로 메소드의 기능을 수행한 후 결과값을 return으로 반환합니다.
    1.  반환값의 자료형이 void일 경우 return을 생략할 수 있습니다.
public void main() {
    int a = 1;
    int b = 2;
    int result = sum(a, b); // 해당 위치에서 호출, 변수 a와 b를 인자로 전달
    System.out.println(result); // 3
}

public int sum(int a, int b) {
    return a+b; // 메소드를 수행하고 a+b라는 결과값을 반환
}

메소드의 책임

소프트웨어 전문가 로버트 C. 마틴은 저서 클린 코드에서 함수를 정의할 때에 있어서 다음과 같은 충고를 남겼습니다.

함수는 한 가지를 해야한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다.

그러면서 함수를 만드는 규칙은 작게, 더 작게 만드는 것이라고 표현한다.

하나의 메소드가 너무 많은 역할을 하면 안되고, 일관적인 추상화 수준을 유지하여 하나의 역할만을 해야한다고 한다.


문제

다음 문제를 읽고 답안을 작성하세요.

  1. 두 정수 a, b를 인자로 받고, 두 정수를 곱한 결과를 정수로 반환하는 메소드 이름이 multiple인 메소드를 Java 코드로 정의하세요. (단, 접근자는 public)
  2. 두 정수 a, b를 인자로 받고, 두 정수의 크기를 비교하여 a가 더 크면 -1, b가 더 크면 1, 서로 같으면 0을 반환하는, 메소드 이름이 compare인 메소드를 Java 코드로 정의하세요. (단, 접근자는 public)

출처

  • 생활코딩 자바 - 메소드 (https://opentutorials.org/course/1223/5369)
  • 신용권, 이것이 자바다: 신용권의 Java 프로그래밍 정복 (한빛미디어, 2015), 214-232p
  • 로버트 C. 마틴, 클린 코드 (2008)

아무것도 모르는 0년차 개발자

얼마 전부터 자취를 시작했다.

 

나는 집돌이

나는 본래 게으른 집돌이다.

 

학교에 다닐 때도 혼자 산 적이 없지는 않았지만, 기숙사나 쉐어하우스 같이 다 같이 사는 곳에서만 살았다.

밥은 항상 부모님 도움을 받아 (비장의 무기 엄카) 밖에 나가서 먹었고, 내 방 치우는 게 귀찮아서 그때그때 안 치웠더니 수습이 안될 정도로 난장판이 되곤 했다.

 

반면에 집에 있을때는 항상 따뜻하고 맛있는 음식들이 가득했고, 내 방은 내가 따로 치우지 않아도 항상 깨끗한 상태로 유지되었다.

아버지는 항상 신선한 재료들을 공수해오셨고, 엄마가 삼시세끼 밥을 차려주었고 살림을 꾸렸다.

 

어릴 때부터 지금까지 그런 풍경들이 당연한 줄 알았고, 앞으로도 계속될 줄 알았다.

그럴 줄 알았으면 지금 자취방 바닥에 앉아 이 글을 쓰고 있지는 않았겠지?

 

혼자 살게 되었다

갑작스럽게 혼자 살게 되었다.

첫 직장을 집과 2시간 거리에 잡게 되었고, 가족과 논의한 끝에 여러 방면을 고려했을 때 자취가 낫다는 결론을 냈다.

그리고 운명처럼 지금 사는 자취방 매물을 보게 되었고, 일사천리로 계약을 끝내고 입주했다.

 

벌써 3주 정도 되었지만 아직도 실감이 안 나고 어려운 일들이 많다.

부모님의 그늘에서 자라 내가 당연하다고 여겼던 것들은 사실 당연한 것이 아니었고

직장에서 퇴근하고 집에 와서 그 일들을 해내려니 쉽지 않다.

집에서 널리고 널려서 쳐다보지도 않던 과일은 막상 사려니 왜 이렇게 비싼 것이며

잠깐 나갔다 왔는데도 왜 방이 금방 습해지는지 모르겠다.

부모님이 자주 보고싶고 존경스럽다.

나는 3주만 해도 힘든 일들을 어떻게 형이랑 날 뒷바라지하면서 30년씩이나 할 수 있었을까?

 

물론 좋은 점들도 있다.

집이 좁은 편이고 그만큼 내 방도 많이 좁았기 때문에 집에서는 평소에 할 수 없었던 것들을 할 수 있게 되었다.

 

이번 주부터 혼자 살면서 느낀 것들에 대한 이야기를 하고자 한다.

 

목차 계획

  • 1화 - 차라리 자취를 해 (취업과 자취방 구하기)
  • 2화 - 욕조 놓을 공간이 있네? (부동산 계약과 이사, 욕조 거래 후기)
  • 3화 - 끝이 없다 (집안일 - 빨래, 쓰레기 버리기, 청소, 요리)
  • 4화 - 어서오세요 (손님 맞이하기) 
  • 5화 - 욕망의 항아리 (음악장비, 운동기구)

 

항상 좋은 글을 쓸 수 있도록 도와주시는 회사의 '앙글' 동아리 식구들에게 감사의 말씀을 드립니다.

 

+ Recent posts