Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[신승준] 7장: 코딩하는 동안 #69

Merged
merged 1 commit into from
Sep 9, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions 7장/신승준.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# 코딩하는 동안

## 우연에 맡기는 프로그래밍

### 암묵적인 가정

모든 차원에서 사람들은 마음 속에 많은 가정을 품고 작업한다. 하지만 이런 가정을 문서화하는 경우는 드물다.

> 그저 문서화라는 단어가 나와서 문득 궁금해진 것인데요! 다들 문서화를 많이 하시나요? 개발이 끝나고 나서도 작업한 것에 대해 문서화를 하시나요? 저희는 스타트업이고 빠르게 일을 쳐내야 하다보니까 문서화가 잘 안 되어 있어서 혼란을 겪은 적이 많았어요.

## 알고리즘의 속도

### 실전에서의 알고리즘 속도

최고라고 언제나 최고는 아니다. 성급한 최적화를 조심해라. 알고리즘을 개선하느라 귀중한 시간을 날리지 마라.

> 전 너무 안 해서 문제인 것 같아요. ㅎㅎㅎ...

## 리팩터링

### 리팩터링은 언제 하는가?

무엇이든 '잘못'되었다는 생각이 들 때가 있을 것이다. 주저하지 말고 변경하라.

> 이전에 준환님 덕분에 VSCode에서 F2 단축키로 같은 레퍼런스의 변수명을 한 번에 바꿀 수 있다는 걸 알게 됐었어요. 이거 덕분에 이름 변경할 때 많이 주저하지 않게 된 것 같아요.

## 테스트로 코딩하기

### 테스트 문화

제대로 된 테스트 문화를 가졌다면 모든 테스트가 언제나 통과해야 한다.

> 이거 보고 삘 받아서 계속 실패하고 있던, 꺠진 창문 같았던 CI들을 모두 성공하도록 수정해버렸어요.

## 바깥에서는 안전에 주의하라.

### 공격 표면을 최소화하라.

입력 데이터는 공격 매개체다.

디버깅 정보는 공격 매개체다. ATM 기계 화면이나 공항 키오스크, 웹 브라우저 화면에 난데없이 긴 스택 트레이스와 데이터가 가득 나타난다.

> 같은 맥락에서 console.log 좀 지우라는 게 생각 났어요. [NextJS Compiler - removeConsole](https://nextjs.org/docs/architecture/nextjs-compiler#remove-console) 요걸로 지워진 상태로 배포시킬 수 있을 것 같아요.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저는 요거 몰랐는데 공유 감사합니다👍

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

테스트를 위한 dataset을 지우는데 써도 좋더라고요 👍 👍


### 민감 정보를 암호화해라.

키나 암호는 빌드나 배포 프로세스 내 설정 파일이나 환경 변수로 관리한다. 더 좋은 방법은 별도의 서비스로 관리하는 것이다.

> 이 때 별도의 서비스 예시로 AWS Parameter Store나 Secret Manager를 들 수 있을까요?

### 잘못된 비밀번호 사례

인증되지 않은 사용자에게 비밀번호 힌트를 제공하거나 "당신의 첫 번째 애완동물의 이름은 무엇인가요?" 같이 즉정한 정보를 물어보지 말라.

> 예전에 많이 본 것 같은데, 요즘엔 못 본 것 같아요.

> 킹 받는 사례가 참 많네요.

인위적인 제약을 걸면 무작위도를 낮추고 나쁜 비밀번호 습관을 부추겨 오히려 보안에 위험이 된다!

## 이름 짓기

### 일관성

모든 프로젝트에는 팀 내에서 특별한 의미가 있는 용어들을 비롯하여 고유의 어휘들이 있다.

반드시 팀의 모든 사람이 각 단어의 뜻을 알고 일관성 있게 사용해야 한다.

> isOpen처럼 is 붙이는 게 팀 규칙이었는데요, 혼자 오픈 소스 코드 보고 open이라고 쓰곤 했었던 저를 반성합니다.
Loading