코드가 깔끔한 길--독해노트
우리는 계량 대상과 계량 단위의 명칭을 가리키는 것을 선택해야 한다.
int elapsedTimeInDays;
int daysSinceCreation;
본뜻을 나타내는 명칭을 선택하면 코드를 쉽게 이해하고 수정할 수 있다.다음 코드의 목적은 무엇입니까?
public List<int[]> getThem()
{ List<int[]> list1 = new ArrayList<int[]>();
for (int[] x : theList)
if (x[0] == 4)
list1.add(x);
return list1;
}
문제는 코드의 간결도가 아니라 코드의 모호도에 있다. 즉, 상하문이 코드에 명확하게 나타나지 않는 정도다.위 코드에서는 다음과 같은 질문에 대한 답을 요구합니다.
(1) theList에는 어떤 종류의 물건이 있습니까?(2) theList 0 아래에 표시된 항목의 의미는 무엇입니까?
(3)값 4의 의미는 무엇입니까?
(4) 되돌아오는 목록을 어떻게 사용합니까?
문제의 답안은 코드 섹션에 나타나지 않았지만, 그것이 바로 그들이 있어야 할 곳이다.예를 들어, 우리는 천둥치기 게임을 개발하고 있는데, 판면이 theList라는 단원격 목록이라는 것을 발견하면, 그 이름을 게임보드로 바꾼다.디스크 위의 모든 칸은 간단한 그룹으로 표시됩니다.또한 0으로 표시된 항목은 "표시됨"을 나타내는 상태 값이며, 상태 값은 4입니다.의미 있는 명칭으로 바꾸면 코드는 상당히 개선될 것이다.
public List<int[]> getFlaggedCells()
{ List<int[]> flaggedCells = new ArrayList<int[]>();
for (int[] cell : gameBoard)
if (cell[STATUS_VALUE] == FLAGGED)
flag gedCells.add(cell);
return flaggedCells;
}
코드의 간결성은 건드리지 않았음을 주의하십시오.연산자와 상수의 수량은 완전히 변하지 않고, 끼워 넣는 수량도 완전히 변하지 않는다.코드가 훨씬 명확해졌어요.더 나아가 int수 그룹이 칸을 표시하지 않고 다른 클래스를 쓸 수 있다.이 종류는 명실상부한 함수(isFlagged라고 부른다)를 포함하여 그 마술수를 덮는다[9].그래서 함수의 새로운 버전을 얻었다.
public List<Cell> getFlaggedCells() {
List<Cell> flaggedCells = new ArrayList<Cell>();
for (Cell cell : gameBoard)
if (cell.isFlagged())
flaggedCells.add(cell);
return flaggedCells;
}
명칭만 간단히 바꾸면 무슨 일이 일어났는지 쉽게 알 수 있다.이것이 바로 좋은 명칭을 고르는 힘이다.
2. 함수
하나만 하기(사건이 추상적인 단계에 있는지 구체적으로 어떻게 판단하는가)
짧게 하려면 20줄을 넘지 않는 것이 가장 좋다.
코드를 맨 위에서 아래로 읽기: 아래로 규칙 - 모든 함수 뒤에 다음 추상적인 단계에 있는 함수
switch 문
묘사적 명칭을 사용하고, 함수 이름은 길어지는 것을 두려워하지 말고, 그 뜻을 다하라.
함수 매개 변수 최대 3개 유지
식별 매개 변수가 매우 추악하다.함수에 브리 값을 전달하는 것은 그야말로 끔찍한 방법이다.이렇게 하면 방법 서명이 즉각 복잡해져서 본 함수가 한 가지 일을 하는 것이 아니라고 큰소리로 선포한다.만약 표지가true라면 이렇게 하고 표지가false라면 그렇게 할 것입니다!
매개 변수의 대상이 함수에 두 개, 세 개 또는 세 개 이상의 매개 변수가 필요할 것 같으면 그 중 일부 매개 변수는 클래스로 봉인해야 한다는 것을 설명한다.
다른 명령과 질문을 분할합니다.함수는 무슨 일을 하든지, 무슨 일을 대답하든지, 양자는 겸할 수 없다.public boolean set(String attribute, String value);
Try/Catch 코드 블록을 분리합니다.Try/catch 코드 블록이 매우 못생겼습니다.그것들은 코드 구조를 어지럽히고 오류 처리와 정상적인 절차를 혼동했다.가장 좋은try와catch 코드 블록의 주체 부분을 추출하여 함수를 형성하는 것이다.P53
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.