
서술형 명칭 사용 가독성은 본질적으로 주관적인 것이며, 그것이 정확히 무엇을 의미하는지 확실하게 정의하기는 어렵다. 가독성의 핵심은 개발자가 코드의 기능을 빠르고 정확하게 이해할 수 있도록 하는 것이다. 서술적이지 않은 이름은 코드를 읽기 어렵게 만든다 아래 예는 서술적인 이름을 사용하지 않은 예이다. 만약 아래 코드가 무엇을 하는지 설명하라고 요청을 받는다면 어떻게 답해야 할까? class T { Set pns = new Set(); Int s = 0; Boolean f(Strinf n) { return pns.contains(n); } Int getS() { return s; } } Int? s(List ts, String n) { for (T t in ts){ if(t.f(n)) { return t..

자신의 코드와 다른 개발자의 코드 다른 개발자들이 활발하게 코드를 변경하더라도 코드의 품질이 유지되려면 코드가 튼튼하고 사용하기 쉬워야 한다. 고품질 코드를 작성할 때 가장 중요한 고려 사항 중 하나는 다른 개발자가 변경하거나 코드와 상호작용할 때 발생할 수 있는 문제는 없는지, 또 발생한다면 그 문제를 어떻게 완화할 수 있을지를 이해하고 선제적으로 조치하는 것이다. 우리는 혼자 일하지 않는 이상 다른 개발자들을 고려하지 않고는 고품질의 코드를 작성할 수 없다. 코드를 작성할 때 다음 세 가지를 고려하는 것이 유용하다. 자신에게 명백하다고 해서 다른 사람에게도 명백한 것은 아니다. 다른 개발자는 무의식중에 내 코드를 망가뜨릴 수 있다. 시간이 지남에 따라 자신의 코드를 기억하지 못한다. 자신에게 분명하다..

코드는 어떻게 소프트웨어가 되는가 코드는 일반적으로 엔지니어가 작성하자마자 실제로 실행되는 소프트웨어가 되는 것이 아니다. 코드가 의도한 대로 작동하고 기존의 기능이 여전히 잘 작동한다고 확신하기 위한 다양한 과정과 점검이 이루어진다. 이러화 과정을 소프트웨어 개발 및 배포 프로세스라고 부른다. 코드베이스(Codebase): 소프트웨어를 빌드할 수 있는 코드가 저장된 저장소다. 이것은 일반적으로 깃, 서브버전, 퍼포스 등과 같은 형상관리 시스템에 의해 관리된다. 코드 제출(submitting code): 코드 커밋 혹은 풀 요청 병합이라고도 불린다. 개발자는 일반적으로 코드베이스를 자신의 로컬 컴퓨터에 복사하고 여기서 코드를 변경한다. 코드 변경이 끝나면 변경된 사항을 메인 코드베이스에 제출한다. 코드 ..
중복 코드 중복 코드의 단점 비슷하진, 완전히 동일한 코드인지 주의 깊게 봐야한다. 코드를 변경할 때, 동일한 모든 곳의 코드를 변경해야 한다. 이에 해당하는 리팩토링 기술은 3종류 가 있다. 동일한 코드를 여러 메소드에서 사용하는 경우, 함수 추출하기 (Extract Function) 코드가 비슷하게 생겼지만 완전히 같지는 않은 경우, 코드 분리하기 (Slide Statements) 여러 하위 클래스에 동일한 코드가 있다면, 메소드 올리기 (Pull Up Method) 함수 추출하기 (Extract Function) 의도와 구현 분리하기 무슨 일을 하는 코드인지 알아내려고 노력해야 하는 코드라면 해당 코드를 함수로 분리하고 함수 이름으로 무슨 일을 하는지 표현할 수 있다. 한줄 짜리 메소드도 괜찮다. ..
이해하기 힘든 이름 깔끔한 코드에서 가장 중요한 것 중 하나는 “좋은 이름”이다. 함수, 변수, 클래스, 모듈의 이름 등 모두 어떤 역할을 하며 어떻게 쓰이는지 직관적이어야 한다. 이에 해당하는 리팩토링 기술은 3종류가 있다. 함수 선언 변경하기 변수 이름 바꾸기 필드 이름 바꾸기 함수 선언 변경하기 좋은 이름을 가진 함수는 함수가 어떻게 구현되었는지 코드를 보지 않아도 이름만으로 이해할 수 있다. 좋은 이름을 찾아내기 위해서 함수에 주석을 작성한 다음, 주석을 함수 이름으로 만들어보자. 함수의 매개변수는 ? 함수 내부의 문맥을 결정한다. 의존성을 결정한다. 변수 이름 바꾸기 많이 사용되는 변수일수록 이름이 더 중요해진다. 다이나믹 타입을 지원하는 언어에서는 타입을 이름에 넣기도 한다. 여러 함수에 걸쳐..

의미있는 이름 의도를 분명히 밝혀라 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? int d; //경과 시간(단위: 날짜) 이름 d는 아무 의미도 드러나지 않는다. 경과 시간이나 날짜라는 느낌이 안 든다. 측정하려는 값과 단위를 표현하는 이름이 필요하다. int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeIndDays; 의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다.그릇된 정보를 피하라 hp, aix, sco는 변수 이름으로 적합하지 않다. 유닉스 플랫폼이나 유닉스 변종을 가리키는 이름이기 때문이다. 실제 List가 아니라면, accountList라 명명하지 않는다...
- Total
- Today
- Yesterday
- spring boot
- MySQL
- 그리디
- 정렬
- 스프링
- 노마드
- 스프링부트
- 데이터베이스
- 김영한
- Spring
- 노마드코더
- leetcode
- webflux
- 인프런
- Algorithm
- 백준
- 구현
- 릿코드
- 스프링 부트
- 자료구조
- 알고리즘
- kotlin
- Real MySQL
- 파이썬
- 코틀린
- 리팩토링
- 북클럽
- mysql 8.0
- 문자열
- 코테
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |