최근 우연히 go를 열심히 사용해야 할 일이 생겼다. 기왕 하는 거 무지성으로 하는 게 아니라 완성도 있는 프로젝트를 만들고 싶다는 생각이 들었다. 코드는 클린 코드 책을 보면서 열심히 깔끔한 코드를 작성하려고 노력하는 중이다. 함수 내의 추상화 레벨 맞추는 게 쉽지 않아서 애를 먹고 있다. 그런데 프로젝트 레이아웃을 깔끔하게 잡는 것도 쉽지 않았다. 그냥 비슷한 코드끼리 뭉쳐놓으면 되지 않나 싶은데 직접 해보려고 하면 잘 되지 않아서 아무래도 뭐라도 참고하는 게 좋을 것 같았다. 막상 레퍼런스를 찾으려고 보니까 적당한 프로젝트를 찾는 것도 쉽지 않았다. 이런 걸 찾아본 적이 있어야지. 그래도 두고두고 보면 도움이 될 것 같은 링크를 몇 개 찾았다.
1.표준 Go 프로젝트 레이아웃 문서
한국어로 되어 있는 것까지는 좋은데, 내용이 이해가 잘 안 된다. 좀 딱딱한 번역체라서 그런가. 여러 번 읽어야 이해할 수 있을 것 같다. 이 안에 있는 링크도 몇개 들어가봤는데 좋은 정보가 많은 것 같다.
여러 문서 중에서 가장 이해하기 좋았던 문서는 이거였다. 지금하는 프로젝트에서 pkg 디렉토리를 쓸까 말까 엄청 고민했었는데, 이걸 보고 그냥 안 쓰기로 결정했다.
2. Trending Go Repository
실제로 다른 사람들은 어떻게 프로젝트를 짰나 궁금해서 검색해봤다. 아무래도 스타가 별로 없는 코드보다는 많은 레포지토리가 조금 더 정답에 가까운 코드일 것 같아서 우선 스타, 포크가 많은 프로젝트부터 살펴봤다. 물론 위의 레이아웃을 지킨 프로젝트도 있긴 했는데 안 지키는 프로젝트도 엄청 많았다. 내가 원하는 레이아웃은 위의 문서에서 찾는게 좋을 것 같다.
3. Effective Go
프로젝트 레이아웃에 대한 내용은 아니지만 go 코드에 대한 이야기 할 때 꼭 빠지지 않고 등장한다. 위에는 원문이고 밑은 어떤 분이 친절하게 번역해놓으신 내용이다. 시간을 들여서 꼼꼼히 읽자. 나는 아직 go스럽다는 것이 정확히 어떤 건지 감을 못 잡은 것 같다. 우선 네이밍부터 최대한 따라해봐야겠다.
4. Top Repository Analysis
16년 글이지만 이런 분석을 하는 사람도 있구나하고 놀랐다. 진짜 멋있으신 것 같다.
5. Awesome Go
여러 패키지를 모아놓은 레포지토리다. 진짜 너무 많아서 다 살펴보기 힘들 정도다. 이런 것도 되는구나 싶은 패키지도 많다. 근데 실제로 잘 짜진 패키지인지는 검증이 필요해보인다.
'etc > memo' 카테고리의 다른 글
Inference(추론)과 Prediction(예측) (0) | 2023.01.24 |
---|---|
[Python] Anaconda 가상 환경 설정/삭제 (0) | 2022.09.04 |
[MySQL/C++] Visual Studio 2019 MySQL 연동 (0) | 2022.05.30 |
[Linux/Ubuntu] Configure: error: no acceptable C compiler found in $PATH 해결 (0) | 2022.05.22 |
[Linux/Ubuntu] Release file is not valid yet. Updates for this repository will not be applied. 해결 (0) | 2022.05.22 |