나쁜 코드에 주석을 달지 마라. 새로 짜라 - 브라이언 W. 커니핸, P.J. 플라우거 잘 달린 주석은 유용하지만 경솔하고 근거 없는 주석은 코드를 이해하기 어렵게 만들어요. 주석은 '순수하게 선하지' 못해요. 프로그래밍 언어 자체가 표현력이 충분하다면 주석은 전혀 필요하지 않아요. 그래서 주석이 필요한 상황에 처하면 곰곰이 생각해야 해요. 상황을 역전해 코드로 의도를 표현할 방법은 없을지. 주석을 달 때마다 자신에게 표현력이 없다는 사실을 푸념해야 해요. 나의 생각: 코드로 표현할 수 있는 것을 주석으로 표현하려고 시도하는 것은 문제가 있을 수 있어요. 하지만 현업 코드를 작성하며 분명히 도움 받았던 주석들도 있었어요. 네트워킹 시 받아올 JSON의 형태를 Entity에 주석으로 마킹할 경우 코드를 ..
1. 작게 만들어라! 함수를 만드는 첫 번째 규칙은 '작게!'이고, 두 번째 규칙은 '더 작게!'에요. 하나의 함수는 하나의 역할을 하면서 동시에 명료하게 보여야 해요. 그래서 하나의 함수는 10줄을 넘기지 않도록 노력해야 해요. if, while과 같은 블록은 한 줄이어야해요. 블록 안의 구조를 새로운 메서드로 추출하면 복잡도와 코드 길이를 낮출 수 있어요. 중첩 구조는 depth 2를 넘어가면 안 돼요. 이렇게 해야 함수의 이해가 쉬워져요. 나의 생각: 이 생각을 간단한 앱을 구현할 때에는 쉽게 지킬 수 있었어요. 당연하고 지켜야하는 이 규칙을 현업에서 코드의 복잡성이 올라가고 구현해야 하는 목표가 복잡해질수록 간과하기 쉬웠던 것 같아요. 새로운 피쳐를 전체 설계할 때에도 힘들 수 있지만 특히 기존 ..
개발뿐만 아니라 다른 분야에서도 전문 용어를 사용하는 이유는 한 단어로 많은 뜻을 전달하기 위해서예요. 있는 용어를 사용하는 것이 아니라 이름을 직접 명명해서 사용할 일이 많은 개발에서는 이름을 잘 짓는 것이 중요해요. 다른 사람이 내 코드를 읽을 때 이름 하나로 역할을 보다 쉽게 이해할 수 있을지, 없을지가 결정되기 때문이죠. 애플의 경우 Swift 네이밍 규칙을 API Design Guidelines(https://www.swift.org/documentation/api-design-guidelines/#naming)에 만들어 두었어요. 클린 코드 2장에서는 Swift에 한정된 네이밍이 아니라 일반적으로 코딩에서 좋은 명명법에 대해 이야기 해요. 다른 글과 다르게 번호가 길어져 나의 생각을 다홍색으로..
르블랑의 법칙(Leblanc's Law) - 나중은 결코 오지 않는다. 클린 코드의 필요성을 부정하는 사람은 없을 것 같아요. 는 첫 장으로 왜 클린 코드가 필요한지 설명하고 있어요. 클린 코드가 필요하고 깨끗하지 못한 코드가 나쁘다는 말을 부정할 사람은 없을 것 같아요. 이왕이면 깨끗한 코드가 더 좋은 결과물이겠죠. 문제는 이 깨끗한 코드를 어떻게 정의할까에요. 저명한 개발자들은 깨끗한 코드를 다음과 같이 정의했어요. 1. 비야네 스트롭스트룹(Bjarne Stroupstrup) - 보기에 즐거운 효율적인 코드 우아하고 효율적인 코드 논리가 간단 ➡️ 버그 발생 감소 의존성을 줄여야 함 ➡️ 유지보수가 쉬워짐 오류는 명백한 전략에 의거해 철저히 처리 한 가지를 제대로 함 2. 그래디 부치(Grady Bo..
🥕 현업 개발을 경험하며 그동안의 개발을 회고하기 👏 첫 개발자 경험을 마치며 개발을 시작한지 2년이 채 되지 않아 너무나 좋은 환경에서 개발자로서 일해볼 경험을 가졌어요. 개발을 혼자 시작하며 많은 정보를 찾아보고 많은 글들을 읽었지만 그것과 다르게 현업에서 업무를 하며 새롭게 깨달은 사실이 많았어요. 그 내용을 스스로 정리하고 공유 해보려고 해요. 🙋 느낀 점 우선, 가장 큰 수확은 내가 개발자라는 직업이 잘 맞는 사람이다 라는 것을 느낀 것이에요. 어떤 것이든 공부와 그걸 일로 하는 것은 다르다고 생각하는데, 개발을 공부하는게 재밌었던 만큼 개발자로 일하는 것도 즐거울 수 있다는 것을 깨달았어요. 개발자로서 지식이 많을 수록 좋은 것이, 단순히 보다 어려운 구조의 코드를 작성하거나 구현하기 어려운 ..
🎯 RxSwift 이해하기_05 RxSwift 이해하기_01 - https://jayb-log.tistory.com/275 RxSwift 이해하기_02 - https://jayb-log.tistory.com/276 RxSwift 이해하기_03 - https://jayb-log.tistory.com/277 RxSwift 이해하기_04 - https://jayb-log.tistory.com/278 🙋 이 글은 RxSwift에 대한 엄청난 이해나 본질을 파악한다기보다 입문하는 입장에서 작성하는 글이에요! 곰튀김님의 강의(하단에 링크) 를 들으며 정리한 내용, 생각들을 작성할 예정이에요. 틀린 부분이나 추가하면 좋은 부분에 대한 피드백은 언제나 환영입니다 :] 이 글에서는 Main Thread, Concurre..
🎯 RxSwift 이해하기_04 RxSwift 이해하기_01 - https://jayb-log.tistory.com/275 RxSwift 이해하기_02 - https://jayb-log.tistory.com/276 RxSwift 이해하기_03 - https://jayb-log.tistory.com/277 🙋 이 글은 RxSwift에 대한 엄청난 이해나 본질을 파악한다기보다 입문하는 입장에서 작성하는 글이에요! 곰튀김님의 강의(하단에 링크) 를 들으며 정리한 내용, 생각들을 작성할 예정이에요. 틀린 부분이나 추가하면 좋은 부분에 대한 피드백은 언제나 환영입니다 :] 🧑🏻💻 Subscribe 하기 우선 아래 코드의 결과물은 당연히 Stream이 됩니다. Observable.just("HelloWorld")..
🎯 RxSwift 이해하기_03 RxSwift 이해하기_01 - https://jayb-log.tistory.com/275 RxSwift 이해하기_02 - https://jayb-log.tistory.com/276 🙋 이 글은 RxSwift에 대한 엄청난 이해나 본질을 파악한다기보다 입문하는 입장에서 작성하는 글이에요! 곰튀김님의 강의(하단에 링크) 를 들으며 정리한 내용, 생각들을 작성할 예정이에요. 틀린 부분이나 추가하면 좋은 부분에 대한 피드백은 언제나 환영입니다 :] 🧑🏻💻 그림으로 Operators 이해하기 그림 이해하기 우선, 위의 그림을 해석하는 방법을 말해볼게요. 빨간색 구슬은 마블이라고 부르며 여기서 데이터를 의미해요. 그 아래 화살표는 스트림(Stream)이에요. 혹시 스트림이 무..
- Total
- Today
- Yesterday
- 파이썬알고리즘인터뷰#4장
- filter#isalnum#lower
- 랜선자르기#이분탐색#BOJ#Python
- 날짜 계산#BOJ#완전탐색#Python
- 터틀비치#리콘#xbox#controller
- 공유기 설치#BOJ#이분탐색#Python
- 나무자르기#BOJ#이분탐색#Python
- 반복수열#백준알고리즘#Python
- 쿼드트리#BOJ#분할정복#Python
- 미로 탐색#백준알고리즘#Python
- 암호코드#dp#BOJ#Python
- 토마토#백준알고리즘#Python
- 섬의개수#백준알고리즘#Python
- 배열합치기#분할정복#BOJ#Python
- API#lazy#
- Distinct#Codility#Python
- 리모컨#완전탐색#BOJ#Python
- 병든 나이트#BOJ#탐욕법#Python
- Brackets#Stacks and Queues#Codility#Python
- django
- 백준 알고리즘#BackTracking
- 종이자르기#분할정복#BOJ#Python
- 텀 프로젝트#백준알고리즘#Python
- NumberofDiscIntersections#Codility#Sort#Python
- Triangle#Sorting#Codility#Python
- 순열사이클#BOJ#Python
- Swift#Tuples#Range
- django#slicing
- PassingCars#Codility#Python
- N으로 표현#DP#Programmers#Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |