이 강의는 프로그래밍 뿐만 아니라 기타 여러곳에서 이름을 어떻게 지으면 좋을지에 대한 강의였다.
이 강의실은 뒤에앉으니 스크린이 잘 보이지않아 좀 아쉬웠지만 내용자체는 굉장히 도움될만한 이야기가 많았다.
추후에 여기에 강의자료를 올려주신다고 함 → https://www.slideshare.net/devcatpublications
네이밍
이름을 붙이는 행위
대상을 이해해야 이름을 붙일 수 있다.
문제 풀기와 비슷.
문제 정의이기도 함
이름의 중요성
◎ 가독성이 올라간다.
→ 코드 이해가 쉽다. 무슨 파일인지, 어디에 쓰이는지. 작업 목표를 금세 파악할수 있다.
◎ 원활한 의사소통의 필수요소
◎ 대화의 맥락을 쉽게 파악할 수 있게 도와준다.
◎ 이름은 문제 영역을 대표함.
→ 변수, 함수, 클래스 이름은 코드를 이해하는 가장 큰 단서
좋은 이름의 특징
명확성 - 이름이 가리키는 대상이 뚜렷해야한다.
유일성 - 대상을 표현하는 가장 적절한 단어를 사용. 독창적이면 기억에 오래남는다.
일관성 - 개별 이름보다는 이름이 속한 시스템의 특징을 사용한다. 비슷한 것에 비슷한 이름.
영속성 - 유행에 민감하지않고 시간이 흘러도 뜻이 변하지
나쁜 이름의 특징
난해함 - 외우기 어려운 전문용어
의존성 - 순환 논리에 빠진 이름. 이름을 이해하려면 대상 밖의 개념을 알아야한다. (ex 논타겟)
비상식적 - 처음 들었을때 오해하기 쉽다. 특정 문맥에 맞춰서 의미를 재정의하는 것
비윤리적 - 비속어, 불쾌한 표현, 정치적으로 올바르지 않은 표현
이상한 이름의 특징
복합적 - 좋은것도 나쁜것도 아님
중독성 - 재미, 유머러스, 빠르게 전파된다
공통 네이밍 가이드라인
◎ 좋은 이름이 없다면 대상에 문제가 있다는 신호.
◎ 이름의 용도를 고려한다
→ 분야마다 같은 이름이 다른 의미로 사용될 수 있다.
◎ 재미있고 기억하기 쉬운 단어를 사용한다
→ 사용성을 높일수 있게. 일상단어 중에서 고르는것도 좋다.
◎ 되도록 빨리 결정하기
→ 너무 고민하지말자. 증명단계에서는 대충 설정하자.
◎ 변경을 두려워하지 않는다.
→ 나쁜 이름을 방치하면 관리비용이 증가한다. 런칭 후에는 이름변경이 불가능하다.
코드 네이밍 가이드라인
◎ 불필요하게 약자를 사용하지 않는다.
→ 이름이 너무 길어지면 대상을 나눠보는 것도 괜찮다.
◎ 주석보다 이름이 중요하다
→ 주석을 달아야 이해되는 이름이면 이름을 바꾸자
◎ 문법을 지켜서 네이밍한다
→ 맞춤법이 틀리면 가독성과 신뢰성이 떨어진다. 검색또한 어려워진다
◎ 한글 이름을 고려할 것
→ 번역하기 힘들거나 잘 안쓰이는 영문보다 한글을 쓰는것이 낫다.
◎ 이름으로 불변성을 강조할 것
→ 언제나 예측가능하고 최적화하기 쉽다.
◎ 반의어의 짝을 맞춰서 사용한다.
→ Begin을 썼으면 End를 사용하는것
◎ '실행'의미의 동사는 주의깊게 사용한다
→ 'Do'는 웬만하면 안쓰고.
→ 'Perform'은 Task나 Action 클래스의 메서드의 경우
→ 'Execute'는 작업을 실행하는 경우
→ 나머지는 보통 'Run'을 사용한다.
◎ 상태변경 의미의 동사는 구별해서 사용한다.
기타 이야기
'기획' 대신 '디자인'이라고 부르자.
'저희' 대신 '우리'를 사용하자.
개발자 ≠ 프로그래머
디자인 네이밍 가이드라인
◎ 이름은 디자이너가 정하는 것이 좋다.
→ 투표로 정하면 무조건 망한다.
→ 디자이너는 제작 중인 게임에 대해 가장 잘 알고있는 사람.
◎ 직교성이 중요하다.
→ orthogonality : 한가지구성을 변경해도 다른 구성에 변화를 주지않는 성질
◎ 설명하기 어려운 대상은 코드네임을 사용하자.
→ 친숙한 단어를 사용하면 기억이 쉬워져 전달력이 올라간다.
→ 이름 붙이기 어렵다면 숫자나 기호 사용도 고려한다.
◎ 개발용어와 인게임 내 용어를 구분한다.
◎ 커뮤니티 용어는 주의해서 사용한다
어셋 네이밍 가이드라인
◎ 어셋에 임시이름 같은 것은 없다. 처음부터 잘 짓자
◎ 엔진 및 플랫폼의 특성을 고려
◎ 공백문자 주의
→ 이름에 쓰지말자
◎ 사전 순서를 고려
→ 중요한 단어를 앞쪽에 배치한다. 숫자의 경우 10이 넘어갈것 같으면 1번부터 미리 01로 사용.
◎ 스크립트 검사 자동화
→ 자세한 내용은 filename linter 구글링 ㄱㄱ
'프로그래밍 공부 > NDC 2018' 카테고리의 다른 글
[2일차] <AxE> 클라이언트 최적화와 문제해결-MMORPG를 Unity로 만들 때 겪을 수 있는 이야기 (0) | 2018.04.27 |
---|---|
[2일차] <던전앤파이터> 유저대응, 오래된 라이브를 우상향시키는 방법 (0) | 2018.04.27 |
[2일차] <프로젝트DH> AI 내비게이션 시스템 - 공중 내비게이션 시스템 개발기 (0) | 2018.04.27 |
[2일차] 던전앤파이터 게임 그래픽 리소스를 활용한 실시간 웹 이미지 조합 (0) | 2018.04.27 |
[2일차] 레벨 디자인 튜토리얼 (0) | 2018.04.27 |