빌어먹을 소스 코드 읽기 ---- RTFM
소스코드 앞에는 비밀이 없다 ---- Hou Jie
본 프로젝트는 주로 참고용으로 JDK
소스코드를 읽을 때의 이해와 경험을 정리/기록한 것입니다.
프로젝트에는 여러 분기가 포함되어 있습니다. 기본 분기의 이름은 master
이고, 테스트 분기의 이름은 test
이며, 소스 코드/노트 분기의 이름은 JDK-X
( X는 JDK 버전 )입니다.
master
브랜치는 때때로 소스 코드 노트와 테스트 코드의 스냅샷을 컴파일합니다.
JDK-X
브랜치는 JDK
의 소스 코드 와 메모를 저장합니다. 읽는 과정에서 생성된 메모는 주석 형태로 소스코드 파일에 직접 기록됩니다.
test
브랜치는 이해를 돕기 위해 테스트 코드를 저장하고 직접 실행할 수 있습니다.
OracleJDK
/ OpenJDK
11 환경에서 실행하는 것을 권장합니다. 상자에서 꺼내 바로 사용할 수 있습니다. 프로젝트를 로컬로 복제/다운로드하고 IntelliJ IDEA
로 엽니다.
소스 코드를 읽을 때 JDK-X
분기로 전환하면 JDK
연결할 필요가 없습니다 .
소스코드를 테스트할 때 test
브랜치로 전환하세요. 이때 OracleJDK
/ OpenJDK
연결해야 합니다.
이 소스 코드는 직접 컴파일을 지원하지 않습니다 . 전체 JDK
프로젝트를 완전히 컴파일하려면 공식 튜토리얼 Building the JDK를 참조하세요.
개별 종속성 파일 누락으로 인해 소스 코드에서 오류가 보고되는 경우 Google에서 해당 jar 패키지를 검색하여 가져오시기 바랍니다. 또는 Github 문제에 피드백을 남길 수 있습니다.
Github 이슈에 대한 좋은 아이디어, 제안, 의견 교환에 오신 것을 환영합니다.
일련번호 | 이모티콘 | 이 프로젝트에서 의미하는 바 | 약어 표시 |
---|---|---|---|
(0) | ? | 초기화 프로젝트 | :tada: |
(1) | README를 포함하되 이에 국한되지 않는 문서 업데이트 | :memo: | |
(2) | 새로운 독서 노트 게시 (참고 1) | :bulb: | |
(3) | 독서 노트의 증분 업데이트 | :sparkles: | |
(4) | ♻️ | 리팩토링은 주로 기존 읽기 노트를 수정하는 것을 의미합니다. 드문 경우지만 소스 코드가 수정됩니다 (참고 2). | :recycle: |
(5) | ✏️ | 교정이란 주로 오타 수정, 소스 코드 그룹화 조정, 소스 코드 조판 수정 등을 말합니다. | :pencil2: |
(6) | ✅ | 테스트 파일 게시 | :white_check_mark: |
참고 1:
현재 특정 소스 코드의 읽기 진행 상황은 읽기 코드 목록_함수별 정렬을 참고하세요.
참고 2: 소스 코드 수정과 관련된 시나리오에는 다음이 포함되지만 이에 국한되지는 않습니다.
의미 없는 변수 이름을 더 이해하기 쉬운 변수 이름으로 수정합니다.
제어문 범위에서 중괄호 완성;
제어문 구조를 재구성합니다(예: if 문의 분할 및 for/while 교환).
for 루프와 foreach 루프 간의 변환;
너무 길고 읽기 어려운 호출 체인을 분할하고 중간 프로세스를 격리합니다.
자주 발생하는 작업을 하나의 메소드로 추출합니다.
한 파일에 있는 여러 최상위 클래스를 다른 파일로 분할합니다(내부 클래스는 분할되지 않음).
익명 클래스와 비익명 클래스 간 변환
익명 클래스 및 함수 표현식의 변환
기능 호출과 일반 호출 간의 변환;수정의 원칙은 원래 코드 논리와 실행 결과를 변경하지 않고 가능한 한 적게 수정하는 것입니다(멀티스레딩과 관련된 코드는 약간 혼란스럽습니다).
수정의 목적은 가독성을 높이고 메모 삽입을 용이하게 하는 것입니다.
오라클 JDK
오픈JDK
커밋 정보의 emoji
참조 소스:
전체 이모티콘 목록
깃모지