후기

독서후기 - [개발자의 글쓰기]

우승리 2020. 10. 30. 22:00

[개발자의 글쓰기]는 개발자로서 써야 하는 다양한 문서들을 어떻게 하면 체계적이고 의사전달이 명확할 수 있게 쓸 수 있는지 알려주는 책이다. 개발자는 의외로 글을 쓰는 시간이 많다. 글을 쓰는 것은 의사소통 방법 중 하나인데 제품을 만들기 까지 많은 사람의 손이 들어가다 보니 개발이라는 일 역시 많은 의사소통, 의사결정 작업들로 글을 잘 쓰는 것이 개발자에게도 도움이 된다.

 

책 내용 중 특히 좋았던 네이밍 규칙을 발췌한다. 변수명이나 패키지명, 모듈명등 개발자는 많은 이름을 지어야한다. 이름은 고유한 가치를 부여할 수록 개발 능률도 오르기 때문에 개발자가 중요하게 생각하는 것 중 하나이며 많은 시간을 들여 고민하는 것 중 하나다. 다만, 이런 시간이 때때로 개발시간에도 큰 영향을 미치기 때문에 이를 효율화 할 필요가 있다. 반복된 고민이 필요하다면 이 현상을 '시스템화' 할 방법은 없는지 생각해봐야한다. 아래 발췌 내용은 네이밍 규칙을 시스템화 한 방법이라고 볼 수 있다.

 

오픈소스에서 일반적으로 사용하는 네이밍 규칙

책에서는 한 블로그에서 분석한 글을 소개한다. 현재 오픈소스에서 어떤 유형으로 네이밍 방법을 사용한지 나타냈다.(참고 : brunch.co.kr/@goodvc78/12#comment)

 

자바 네이밍 컨벤션 준수

  • 클래스는 UpperCamelCase
  • 함수와 변수는 lowerCamelCase
  • 상수는 UPPER_DELIMITER_CASE

네이밍은 보통 16글자, 3단어의 조합

  • 클래스 네임: 3.18 단어
  • 함수 네임: 3.36 단어
  • 변수 네임: 2.57 단어

품사는 주로 명사, 동사, 형용사의 조합

  • 명사 + 명사 + 명사
  • 동사 + 명사 + 명사
  • 형용사 + 명사 + 명사

 

파스칼 표기법을 이용한 클래스 이름

interface Menu

class CoffeeMenu implements Menu

 

카멜 표기법을 이용한 변수 이름

int totalCount = 0;

void orderCoffee()

 

 

함수 이름 짓기

책에서 좋은 예제로 함수 이름 짓는 방법을 알려준다.

먼저 함수의 경우 일반적으로 역할 중심의 기능 설명이 있을 것이다. 다음 예제를 보자.

 

"사용자가 이름을 입력하고 등록 버튼을 클릭하면, 시스템이 사용자 이름을 input 태그에서 가져와 이름 입력 여부와 글자 수를 확인한 후 입력이 안 되었으면 스크립트를 중단하고 input 태그를 활성화해 사용자가 쓸 수 있게 하고, 글자 수가 한글 두 글자 이하면 확인을 요청해 사용자가 확인할 수 있게 한다."

 

위 문구에서 중복표현된 것과 함수 구현에 의미가 없는 문장들을 제외한다.

 

"사용자가 이름을 입력하고 등록 버튼을 클릭하면, 시스템이 사용자 이름을 input 태그에서 가져와 이름 입력 여부와 글자 수를 확인한 후 입력이 안 되었으면 스크립트를 중단하고 input 태그를 활성화해 사용자가 쓸 수 있게 하고, 글자 수가 한글 두 글자 이하면 확인을 요청해 사용자가 확인할 수 있게 한다."

 

남겨진 문장을 분리하면 다음과 같이 된다.

 

  1. 사용자 이름을 input 태그에서 가져온다
  2. 사용자 이름의 글자 수를 확인한다
  3. 입력이 안 되었으면 input 태그를 활성화한다.
  4. 글자 수가 한글 두 글자 이하면 확인을 요청한다.

이제 기능에 따른 함수 구현을 몇개로 만들지 결정한다. 3, 4는 2에 포함된 동작이므로 2~4번을 하나로 묶는다.

 

  1. (함수) 사용자 이름을 input 태그에서 가져온다
  2. (함수2) 사용자 이름의 글자 수가 2글자 이하면 다음과 같이 처리한다.
    1. 만약 글자 수가 0(null)이면 input 태그를 활성화한다.
    2. 만약 글자 수가 1 또는 2이면 사용자에게 확인을 요청한다.

이제 위 문장을 영어로 변경한다.

 

  • (함수) 사용자 이름을 input 태그에서 가져온다
    • get user's name from the text input field
  • (함수2) 사용자 이름의 글자 수가 2글자 이하면 다음과 같이 처리한다.
    • do something if user's name contains under 2 characters

위 문장에서 다시 필요 없는 정관사들을 빼고 기능에 맞는 영어단어로 수정해서 붙이면 다으모가 같이 된다.

  • (함수1) getUserNameFromField()
  • (함수2) checkUserNameUnder2Characters()

 

위 예제는 함수를 기능 단위로 나누는데도 도움되고 이름을 체계적으로 고민없이 짓는데도 도움된다.

 

 

 

참고