코드정리
-
7. 똥통에서 뒹굴기Technique/Programmer 2017. 2. 5. 23:37
누구나 늪과 같은 코드를 만나본 적이 있을 것이다. 알지 못하는 사이에 코드 속에서 허우적 거리다가 결국 점점 빠져들고 있음을 깨닫는다.코드가 꽉 짜여 있어 고치기도 어렵고, 뭔가 바꿔 보려 하면 많은 에러를 뱉어 낸다. 바꿔보려 할수록 그 속에 더 깊이 빠져들 뿐이다. 1. 눈치 채기 훌륭한 코드는 순수 예술이나 한 편의 시와 같다. 그러나 언제나 이런 시와 같은 훌륭한 코드만 존재하진 않는다.이상한 코드를 효과적으로 다루기 위해서는, 문제 지점을 어떻게 찾고 다룰지 알아야 한다.※ 나쁜 코드를 언제든 만날 수 있다는 마음의 준비를 하자. 나쁜 코드를 다룰 때 쓸 강력한 도구들을 미리 준비해 두자. 2. 헤쳐 나가기 더러운 코드를 만들게 된 이유부터 냉정하게 분석해야 한다.더러운 코드를 방금 발견 했다..
-
6. 경로 탐색Technique/Programmer 2017. 2. 2. 15:25
개발자 라면 더 많은 코드를 둘러봐야 하고 더 자주 새로운 프로젝트에 투입되어야 하낟. 하나의 팀에서 영원히 하나의 코드베이스만 다루다가 고인 물이 되지 말아야 한다 이미 존재하는 거대한 코드베이스에 적응하기란 어려운 일이다. 적응을 위해서는 다음과 같은 작업을 빠르게 해내어야 한다.코드의 어느 부분부터 보아야 하는지 파악하기코드의 부분별 기능을 알아내고, 그 기능을 어떻게 수행할지 살펴보기코드의 품질을 가늠하기시스템 내부를 어떻게 탐색할 것인지 계획하기코딩 관례를 이해하고, 본인의 수정 사항이 그것과 어울리도록 만들기특정 기능이 있을 법한 위치를 파악하고, 그 기능에 의해 발생하는 버그 찾아보기코드와 함께 그것의 주요한 부속 부분들의 테스트 코드 및 문서 등의 관계를 이해하기 1. 친구들의 작은 도움 ..
-
5. 코드베이스의 망령Technique/Programmer 2017. 1. 30. 14:23
추억은 시간이 흐르면 예전 같지 않다. 오래된 코드 역시 마찬가지다.그 안에는 함수 그렘린과 오타 악마가 숨어 있을 수 있다. 작성 당시엔 완벽하다고 생각했을 것이다.하지만 예전 코드를 비판적으로 바라보면 필연적으로 온갖 종류의 버그를 찾아내게 될 것이다. 프로그래머로서 자질은 자신이 작성한 코드가 아닌, 그것을 대하는 태도와 작성하는 방식에 의해 결정된다.오래된 코드를 다시 들여다보는 것은 새로운 경험이다. 1. 외관일부 언어에 사실상 표준 코딩 레이아웃 스타일이 있음에도, 스스로 오랜 시간 고민하며 찾아낸 수많은 레이아웃 이슈들이 남아 있다.그런 레이아웃 이슈들은 현재 프로젝트에서 사용되는 코딩 관습, 또는 다년간의 실험을 거친 경험에 근거한다.익숙해진 각각의 코딩 스타일은 별다를 것이 없지만, 하나..
-
4. 코드줄여 개선하기Technique/Programmer 2017. 1. 26. 15:45
가장 화끈한 코드 개선 방법은 코드에서 방대한 부분을 제거하는 것이다.불필요하게 파일의 사이즈와 공간을 차지하는 코드를 대폭으로 줄이는 개선이야 말로 단순한 것이 더 아름답다는 말을 전적으로 보여주는 예시이다. 1. 제멋대로인 코드불필요한 코드가 만들어지는 이유가 뭘까? 그것은 프로그래머가 자신의 개인적 취향만으로 제멋대로 코드를 작성했기 때문이다추가 코드가 재미있는 부분이라 그냥 작성하였다.미래에 필요할 것 같아서 지금 작성해 두기로 하였다.엄청나게 큰 기능이 아니라 작은 기능에 불과하기에 실제로 필요한지는 모르겟으나 지금 만들어 두는 것이 좋다고 생각했다.실제 사양서에는 존재하지도 않는 기능을 제멋대로 구현하였다. 우리는 린 개발 절차를 잘 알고 있으며, 아주 훌륭한 개발자와 함께 그 같은 일을 피할..
-
3. 코드 적게 쓰기Technique/Programmer 2017. 1. 24. 14:58
많은 양의 코드 작성이 곧 다량의 소프트웨어 개발을 의미하지는 않는다. 소프트웨어의 어떤 코드들은 사용자 경험의 질을 떨어뜨리거나 결함을 발생시켜 결과적으로 전체 개발량에 부정적 영향을 미친다. 소프트웨어를 개선하는 최고의 방법 가운데 하나는 바로 코드를 제거하는 것이다. 1. 코드에 신경써야하는 이유소프트웨어 시스템이 기능하는 한 코드들은 유지 보수 되어야 한다. 각 줄의 코드마다 비용이 든다. 코드를 길게, 많이 쓸수록 유지 보수 비용은 높아진다.수많은 코드란 읽고 이해해야 할 내용이 많음을 의미한다. 이는 프로그램을 파악하기 더 어렵게 만든다.코드가 많을수록 수정해야 할 부분도 많아진다.코드는 버그를 품고 있다. 코드가 많을수록 버그가 숨을 수 있는 공간도 많아진다.중복 코드는 특히 치명적이다. 하..
-
11. 테스트와 가독성Technique/Readable Code 2015. 12. 11. 12:54
■ 읽거나 유지보수하기 쉽게 테스트를 만들어라 테스트 코드가 읽기 쉬우면, 사용자는 실제 코드가 어떻게 동작하는지 그만큼 더 이해하기 쉽다.다른 프로그래머가 수정하거나 새로운 테스트를 더하는 걸 쉽게 느낄 수 있게 테스트 코드는 읽기 쉬어야 한다.- 코드를 수정하는 일이 두려워진다. 아니 우리는 이 코드에 손대고 싶지 않아. 테스트 케이스를 모두 변경하는 일은 너무나 끔찍하다- 새로운 코드를 작성하면 그에 따르는 새로운 테스트를 자겅하지 않는다. 시간이 흐름이 지나면서 더 낮은 비율의 코드가 테스트되며, 따라서 코드에 대한 확신이 줄어들 수 밖에 없다.자신의 코드를 사용하는 사람이 테스트코드를 편하게 느끼도록 만들어야 한다. 코드를 사용자는 새로운 코드가 왜 현재 테스트에서실패하는지 쉽게 진단할 수 있어..
-
10. 코드 분량 줄이기Technique/Readable Code 2015. 12. 11. 12:53
프로그래머가 배워야 하는 가장 중요한 기술은 언제 코딩을 해야 하는지 아는 것이다.가장 읽기 쉬운 코드는 아무것도 없는 코드다 ■그 기능을 구현하려고 애쓰지 마라 - 그럴 필요 없다. 프로그래머는 어떤 기능을 구현하는 데 필요한 노력을 과소평가하는 경향도 있다. 조잡한 프로토타입을 구현하는 시간을 지나치게낙관적으로 예측하고 그 코드를 유지보수하고, 문서를 만들고, 코드베이스에 새로운 무게를 더하는데 얼마나 많은 시간이 필요한지 자각하지 못한다는 이야기이다. ■ 요구사항에 질문을 던지고 질문을 잘게 나누어 분석하라 프로그램이 반드시 빠르게 동작하고, 100% 정확하고, 모든 종류의 가능한 입력을 처리해야 하는 것은 아니다. 주어진 요구사항을 정말로 잘 분석하면, 적은 코드로 구현할 수 있는 간단한문제를 정..
-
9. 생각을 코드로 만들기Technique/Readable Code 2015. 12. 11. 12:06
할머니에게 설명할 수 없다면 당신은 제대로 이해한 게 아닙니다. - 아인슈타인 복잡한 생각을 다른 사람에게 설명할 때 중요하지 않은 자세한 내용 때문에 듣는 사람을 혼동시키는 일이 종종 있다.자신의 생각을 지식이 부족한 사람에게 전달하는 기술은 매우 소중하다.설명할 내용을 걸러서 요지만 뽑아내는 능력이 요구된다.내용을 잘 이해하게 도울 뿐만 아니라 설명하는 사람 자신도 그 내용을 다시 한 번 명확하게 이해하게 도와준다.작성한 코드를 다른 사람에게 보여줄 때도 같은 기술이 필요하다.코드역시 쉬운말로 작성 되어야 한다- 코드가 할 일을 옆의 동료에게 말하듯이 평범한 영어로 묘사하라 - 이 설명에 들어가는 핵심적인 단어와 문구를 포착 하라- 설명과 부합하는 코드를 작성하라 ■ 논리를 명확하게 설명하기■ 라이..