
뚜껑을 열었을 때 코드가 깔끔하고 일관적이며, 꼼꼼하다고 감탄하면 좋겠다. 질서 정연하다고 탄복하면 좋겠다. 술취한 뱃사람 한무리가 짜놓은 듯 어수선해 보인다면 독자들은 프로젝트의 다른 측면도 똑같이 무성의한 태도로 처리했으리라 생각할 것이다. 형식은 의사소통의 형식이다. 그리고 의사소통은 전문 개발자의 일차적인 의무이다. 그렇기 때문에 형식은 중요하다! 너무 중요해서 무시하기 어렵다. 이부분이야말로 사소한 곳에서 발휘하는 정직이라고 생각한다. 오늘 구현하는 기능은 다음 버전에서 바뀔 수 있다. 하지만 오늘 구현한 코드의 가독성은 앞으로 바뀔 모든 코드의 품질에 지대한 영향을 미친다. 코드의 길이는 적절해야 한다. 여러 큰 프로젝트의 예시를 살펴보면 500줄, 200줄도 안되는 파일로도 큰 시스템을 구축..

나쁜 코드에 주석을 달지 마라. 새로 짜라.- 브라이언 W. 커니핸, P.J. 플라우거 - 주석은 순서하게 악하다. 우리가 프로그래밍 언어를 치밀하게 사용하여 코드의 의도를 표현할 능력이 있다면, 주석은 거의 필요하지 않으리라. 아니, 전혀 필요하지 않으리라. 주석은 반겨 맞을 손님이 아니다. 주석이 없고 깔끔한 코드가 복잡하고 어수선하고 주석이 많이 달린 코드보다 훨씬 좋다. 주석은 오래될수록 코드에서 멀어진다. 프로그래머들이 주석을 유지하고 보수하기란 현실적으로 불가능 하니까. 필자는 그래서 코드를 설명하는 문서를 작성하는 것을 지양하는 편이다. 유지보수 관리해야하는 포인트가 2개로 늘어나기 때문이다. 이 책에서도 주석을 달아야 한다면, 코드를 더 깔끔하게 정리하거나 보수해야한다고 말한다. 우리는 우..

프로그래밍의 기술은 언제나 언어 설계의 기술이다.소프트웨어를 짜는 행위는 여느 글짓기와 비슷하다. 3장은 함수를 잘 만드는 기교를 설명한다. 이번에도 각각의 소제목을 통해서 내용을 정리하겠다. 중간중간에는 필자의 개인적인 코멘트와 편집이 들어가 있을 수 있다. 작게 만들어라함수를 만드는 첫 번째 규칙: 작게. 두 번째 규칙: 더 작게. 각 함수는 작을수록 더 명확해진다. if 문 while 문 등은 한 줄이어야 한다. 중첩 구조가 생길 만큼 함수가 커져서는 안 된다. 문장이 짧으면 글을 이해하기 편하듯, 함수도 짧아야 좋다.한 가지만 해라!해당 소제목은 특별히 제목 2 형식을 사용했다. 정말 중요한 부분이다. 글을 쓸 때도 하나의 문단에서 하나의 주제를 가지고서 작성되듯, 함수도 하나의 작업만을 해야 이..

2장은 의미 있는 이름을 짓는 방법에 대해서 설명한다. 이름은 어디에나 사용되고 많이 사용되기 때문에 이름을 잘 지어두면 여러모로 편하다. 간단하게 소제목 별로 인상 깊은 내용들, 정리해두고 싶은 내용들을 나열하듯 글을 써보고 싶다. 의도를 분명히 밝혀라의도를 분명히 하는 것은 정말로 중요하다. 의도를 분명하게 이름을 명명하거나 수정하기만해도 코드가 하는 일이 이해하기가 쉬워질 것이다.그릇된 정보를 피하라프로그래머는 코드에 그릇된 단서를 남겨서는 안 된다. 일관성이 떨어지는 이름을 사용하는 것, 널리 쓰이는 이름을 다른 의미로 사용하는 것은 그릇된 정보이다.의미 있게 구분하라컴파일러나 인터프리터만 이해하도록 명명하지 말자. 1장에서도 말했지만 우리는 코드라는 글을 쓰는 저자이다. 저자의 의도를 명확하게 ..

사소한 곳에서 발휘하는 정직은 사소하지 않다.사소한 것은 중요하다. 이 책은 사소한 듯 보이나 실제로는 사소하지 않은 내용을 다룬다. 사소한 것들을 신경 쓰지 않을 때 전체적인 매력이 떨어지게 된다. 우리가 설계가 아주 잘되어 있는 집에 입주한다고 하자. 실용성도 좋고 디자인도 멋지게 만들어졌다. 근데 막상 들어가 보니 손잡이가 틀어져있고, 화장실 타일을 삐뚤어져 있으며, 문이 꼭 맞게 닫히지 않는다면 어떨까? 그 집에 대한 매력도가 현저하게 떨어질 것이다. 우리의 코드에도 이런 방식을 취해야 한다. 사소한 것에 성실해지자. 우리는 소프트웨어를 만드는데 집중했었다. 하지만 우리는 대부분의 시간을 소프트웨어를 유지보수 하는데 보낸다. 자동차를 정비하고 수리하는 유지보수를 우리는 미루는가? 미룬다면 자동차는..

이번 포스트는 각 Python 버전 별로 주된 변경점을 정리한다. 해당 포스트에서 모든 변경점을 나열하지 않는다.필자의 기준에 따라 개인적으로 중요하다고 생각되는 부분, 흥미로운 부분을 넣었다. 독자분들도 흥미로운 부분이나 개인적으로 중요한 변경점이라고 파악된다면 댓글로 알려주면 좋겠다.Python 3.9PEG 기반 파서(Parser)딕셔너리 연산자연간 릴리즈컬렉션 타입 힌트레거시 지원 끝기존 LL(1) 기반 파서에서 PEG 기반 파서로 변경된 것은 언어의 유연성과 확장성을 크게 향상시키는 변화이다. LL(1) 파서는 좌에서 우로 입력을 읽어가며 하나의 토큰으로만 선택을 결정하는 단순하고 효율적인 방식이다. 하지만 좌측 재귀 처리와 복잡한 문법 확장에 한계가 있다. 반면, PEG 파서는 백트래킹을 허용해..
- Total
- Today
- Yesterday
- 오픈소스기여
- SW마에스트로
- 노마드코더
- 타입스크립트
- 대전
- 파이썬
- boj
- ssi-at
- 오픈소스
- DevOps
- 개발자북클럽
- 회고
- python3.8
- 프론트엔드
- 네트워크
- 합격
- 알고리즘
- 백준
- 프로그래머스
- 코딩테스트
- IT대외활동
- python
- 클린코드
- 개발자
- 기계식 키보드
- devcon
- 노개북
- 개발자밋업
- github
- 후기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |