명명력을 높이다

4182 단어 Go
이 글은 and factory Advent Calendar 2018 Day19에 관한 글입니다.
전날@haguhoms(a.k.a는 기진맥진)의'애니메이션과 가까워~ 너와 0장~'.
이름, 중요하지.읽을 수 있는 코드라도 명명에 관한 페이지가 매우 많다. 무엇보다 중요한 것은 평소의 업무 명명이 미묘하기 때문에 오해와 오류가 발생했다는 것이다. 이런 경험은 많든 적든 있다.
나는 본사에서도 각양각색의 프로젝트를 추진한 토대에서 팀 개발에서 명명의 정밀도를 조금씩 향상시켰다고 생각한다.오늘 우리는 명명 정밀도, 즉 명명력을 높이는 방법을 공유할 것이다.

일반


용어 일람표를 미리 만들어서 읽다


양식서가 모두 나온 상태에서 먼저 용어 일람표를 작성한다.그리고 관련된 모든 사람이 함께 읽으면 기초적인 문장과 명명의 규칙이 통일된다.
만들 때 스네크 상자와 유당 상자를 맞추면 편해요.

위에서 설명한 대로 스프레드시트를 작성합니다.논리적 이름과 명명 사례만 입력하면 위카멜과 아래카멜은 다음과 같은 방식으로 자동으로 생성됩니다.
//アッパーキャメル
=SUBSTITUTE(PROPER(B2),"_","")
//ロワーキャメル
=LOWER(LEFT(B2,1))&MID(SUBSTITUTE(PROPER(B2),"_",""),2,LEN(B2))
때때로 단체에서 의견 충돌이 발생할 수 있다.최근 금고가 Safe인지, Vault인지, Kinko(실제로는 금고와 고유명사이기 때문에 Kinko도 후보가 되었다)에 대한 의견이 엇갈리고 있다.
이럴 때 Slack 같은 걸로 간단하게 설문조사를 하면 팀의 반응을 보면 쉽게 결정됩니다.비록 간발의 차이로 Safe가 되었지만 프로젝트에 따라 Vault와 Kinko가 될 수 있습니다.
이렇게 하면 수용감 있는 것을 미리 만들어 두면 수월해진다.

영어의 어성에 주의하다


프로그램은 영어가 아니지만 알파벳과 영어 단어를 사용하기 때문에 영어처럼 생각하면 더욱 자연스럽고 알기 쉬운 좋은 이름이 된다.영어권 사람들이 쓴 소스도 많죠.
거의 아래의 기사는 하고 싶은 말을 썼으니 꼭 읽어보시길 추천합니다.
모형과 방법을 명명할 때 영어의 어성에 주의해야 한다
실제로 논평에서 다음과 같은 내용을 지적했다.
//財布に購入コインとボーナスコインがあるとして
Wallet.buyCoin -> Wallet.purchasedCoin

//xxxというシステムに接続しているか、していないかのbool値
User.is_xxx_connection -> User.is_xxx_connected, User.has_xxx_connection

//店がクローズしているか
Shop.isClose -> Shop.isClosed
보충하자면 영어로 설명하고 뇌 안에서 모의 대화를 하면 그에 상응하는 정확한 것을 만들 수 있지 않을까 싶어요.
하면, 만약, 만약...
What is this coin ?
This coin is purchased coin, It is user purchased.
On the other hand, user have bonus coin. That is user get on bonus.
하면, 만약, 만약...
This user is connected to xxx system ?
Yes, this user connected to xxx system. The user has connection to xxx system.
하면, 만약, 만약...
What is this shop's status ?
This shop will open at 10 am. It's 9 am now. So the shop is closed.
이런 뇌내 대화는 자연스러운 대화에서 잘라내 이름을 정한다.
여기서 중요한 것은 영어가 정확하다기보다는 전달하느냐 이해하느냐 하는 것이다.그런 의미에서 일본어를 남기기도 하고 어려운 단어를 피하기도 한다.반대로 단어 자체가 정확해 보여도 어성이 틀리면 전달할 수 없고 전달해도 이해하기 어렵기 때문에 수정해야 한다.
물론 자신이 잘못 느끼는 경우도 있다.새로운 것을 만드는 함수에서 newxx라는 함수는 평론에서 언급되었다. new는 동사가 아니라 이 함수 이름도 미묘하지 않지만 Go 공식의 함수 중 (영어권에 쓰인 함수) newxx라는 함수가 있기 때문에 이런 결론을 얻었다.다른 사람의 출처를 읽고 영어로만 말하면 얻을 수 있는 사람과 모국어의 피드백이 필요하고 중요하다.
이곳은 모두 더욱 정교해지자.

서버 측 정보


현재 당사는 개발 중에 Go를 사용하고 있으며, 이를 바탕으로 진행하는 방법에 대해 설명합니다.

프로토콜 버퍼 사용하기


프로토콜 버퍼를 사용합니다. 자기 회사가 go이기 때문에grpc를 사용합니다. 하지만 이것은 매우 좋은 일이 있습니다. 그것은 문서이기 때문에 평론하기 쉽습니다.
이전에는 API 설계서로 excel과 swagger를 사용했지만 평론 오류를 찾아내고 알기 쉽게 전달하는 것은 상당히 어려웠다.아무리 해도 누출이 발생하기 때문에 다음과 같은 쉽게 발견할 수 있는 부분을 줄이고 구조를 쉽게 조정하는 것이 중요하다고 이해하기 쉽게 지적한다.
이 점에서 텍스트라면 쉽게 볼 수 있고 원본 코드 관리도 쉬우며 추출된 평론도 쉽다.그리고 서버의 엔지니어와 응용 프로그램의 엔지니어는 모두 같은 것을 보기 때문에 오류가 줄어든다.
한동안 swagger의 보살핌을 받아 현재 상황은 프로토콜이 비교적 좋다고 생각합니다.

맞춤법 검사 정적 분석 도구 사용


나는 기계적으로 분석하고 찾아내는 것도 좋은 방법이라고 생각한다.
다음은 맞춤법 오류를 확인하고 검사하는 Go 도구입니다.
https://github.com/client9/misspell
이것은 CI입니다. 반드시 플루리크에서 검사할 것입니다.완전하지는 않지만 존재하지 않는 단어와 복수 형식의 오류 등이 튀어나온다.

총결산


이상, 명명력을 높이기 위해서는 다음과 같이 기술적 측면과 구조적 측면 두 가지를 고려하는 것이 좋다.
  • 개인+팀 스킬 향상
  • 영어 어성 사고
  • 영어 능력 향상
  • 학습 일반, 읽기 출처
  • 메커니즘 보완
  • 용어 목록 작성 및 팀 공유
  • 프로토콜의 활용과 평론
  • 정적 분석 도구 및 CI
  • 명명력을 높여라!

    좋은 웹페이지 즐겨찾기