《소프트웨어 개발 심사숙고록》의 대상 헬스 체조.

5441 단어 코딩 사양
최근'소프트웨어 개발 심사숙고록'의 일부를 봤는데'대상 건강체조'가 재미있다고 느꼈어요. 이 기록에 자신이 쓴 코드는 이 요구에 따라 썼으면 좋겠어요.
규칙1: 방법은 1 레벨 들여쓰기만 사용
모든 방법은 한 가지 일에만 관심을 가지고 중용성을 높인다
원래 코드는 다음과 같습니다.
class Board {
	...
	String board() {
		StringBuffer buf = new StringBuffer();
		for(int i = 0; i < 10; i++){
			for(int j = 0; j < 10; j++)
				buf.append(data[i][j]);
			buf.append("
"); } return buf.toString(); } }

재구성된 코드는 다음과 같습니다.
class Board {
	...
	String board(){
		StringBuffer buf = new StringBuffer();
		collectRows(buf);
		Return buf.toString();
	}

	Void collectRows(StringBuffer buf){
		for(int i = 0; i < 10; i++)
			collectRow(buf, i);
	}

	Void collectRow(StringBuffer buf, int row){
		for(int i = 0; i < 10; i++)
			buf.append(data[row][i]);
		buf.append("
"); } }

규칙2:else 키워드 사용 거부
층층이 끼워 넣은 조건 판단은 종종 사람을 현기증나게 한다. 또한 조건 판단 구조는 보통 중복 코드의 출처이다.return 앞당기기, 삼원 연산자, 다태적 등을 통해else 사용을 피할 수 있다
원래 코드:
public static void endMe(){
	if(status == DONE){
		doSomething();
	}else{
		doSomethingElse();	
	}
}

재구성 후 코드:
public static void endMe(){
	if(status == DONE){
		doSomething();
		return;
	}
	doSomethingElse();
}

원래 코드:
public static Node head(){
	if(isAdvancing()){
		return first;
	}else{
		return last;
	}
}

재구성 후 코드:
public static Node head(){
	return isAdvancing() ? first : last;
}

또한 상태에 따라 분기 선택을 하는 코드가 대량으로 중복되면 전략 모드나 반사 방식으로 해결하는 것을 고려해야 한다.
규칙 3: 모든 원본 형식과 문자열을 봉인합니다
방법명에서 매개 변수의 뜻을 분명히 묘사해야 한다
규칙 4: 코드 한 줄에 "."만 있음연산자
한 줄에 "."이 여러 개 있으면,그리고 이런 것들은서로 연결되어 있다면 당신의 대상은 이미 다른 대상에 깊이 빠져들게 될 것입니다.이런 과량의 "."포장성을 파괴했다는 뜻이야.대상이 당신을 위해 뭔가를 하도록 하세요. 대상 내부의 세부 사항을 엿보지 말고.포장의 주요 의미는 클래스의 경계가 알 수 없는 유형에 들어가지 않도록 하는 것이다.
원래 코드:
class Board{
   ...
   class Piece{
       ...
       String representation;
   }

   class Location{
       ...
       Piece current;
   }

   String boardRepresentation(){
       StringBuffer buf = new StringBuffer();
       for(Location l : squares())
           buf.append(l.current.representation.substring(0, 1));
       return buf.toString();
   }
}

재구성 후 코드:
class Board{
   ...
   class Piece{
       private String representation;
       String character(){
           return representation.substring(0, 1);
       }
       void addTo(StringBuffer buf){
           buf.append(character());
       }
   }

   class Location{
       ...
       private Piece current;
       void addTo(StringBuffer buf){
           current.addTo(buf);
       }
   }

   String boardRepresentation(){
       StringBuffer buf = new StringBuffer();
       for(Location l : squares())
           l.addTo(buf);
       return buf.toString();
   }
}

규칙 5: 약어 사용 안 함
우리는 항상 자기도 모르게 유형명, 방법명, 변수명에 줄임말을 사용한다.이 유혹을 막아주세요.줄임말은 사람을 현혹시키고 더 심각한 문제를 숨기기 쉽다.왜 줄임말을 썼는지 생각해봐.같은 단어를 두드리는 게 지겨워서?만약 이런 상황이라면, 아마도 너의 방법이 너무 자주 사용되었을 것이다. 너는 멈춰서 중복을 없애야 하지 않겠니?방법이 너무 길어서?이것은 어떤 직책이 정확한 위치에 놓이지 않았거나 부족한 것이 있다는 것을 의미할 수 있다.
가능한 한 유형명과 방법명에 한두 단어만 포함하도록 유지하고 이름에서 상하문에 대한 정보를 중복시키지 않도록 한다.예를 들어 어떤 종류가 Order라면 방법명은shipOrder()라고 할 필요가 없다. 이를 Ship()로 간소화하면 클라이언트는order로 돌아간다.ship () - 코드의 의도를 간단명료하게 설명할 수 있습니다.
규칙6: 실체 대상을 간단명료하게 유지
이것은 모든 종류의 길이가 50줄을 초과할 수 없고 가방에 포함된 파일이 10개를 초과하지 않는다는 것을 의미한다.
규칙7: 어떤 종류의 실례 변수도 두 개를 초과하지 마라
일반적으로 실례 변수에 대한 결합을 풀면 각 관련 실례 변수 간의 공통성을 깊이 이해할 수 있다.때때로 몇 개의 관련 실례 변수는 일류 집합에서 서로 관련된다.하나의 대상을 대량의 속성을 가진 상태에서 차원적이고 상호 관련된 여러 개의 대상으로 해체하면 더욱 실용적인 대상 모델이 직접 만들어진다.이 규칙을 끊임없이 응용하면 복잡한 큰 대상을 대량의 간단한 작은 대상으로 신속하게 분해할 수 있다.당신이 진정으로 시작할 때 두 가지 방향을 따라 진행할 수 있다. 첫째, 대상의 실례 변수를 관련성에 따라 두 부분에서 분리할 수 있다.또한 두 개의 기존 실례 변수를 봉인하기 위해 새로운 대상을 만들 수도 있다.
원래 코드:
class Name{
   String first;
   String middle;
   String last;
}

재구성 후 코드:
class Name{
   Surname family;
   GivenNames given;
}

class Surname{
   String family;
}

class GivenNames{
   List names;
}

규칙 8: 일류 집합 사용
이 규칙을 응용하는 방법은 매우 간단하다. 집합을 포함하는 모든 종류는 다른 구성원 변수를 포함할 수 없다.
규칙 9: Getter/Setter/Property를 사용하지 않음
만약 대상 밖에서 실례 변수의 값을 마음대로 물어볼 수 있다면, 행위와 데이터는 한 곳에 봉인될 수 없다.엄격한 봉인 경계 뒤에서 진정한 동기는 프로그래머가 인코딩을 완성한 후에 반드시 이 코드의 행위에 적합한 위치를 찾아 대상 모델의 유일성을 확보하도록 하는 것이다.이렇게 하면 많은 장점이 있을 것이다. 예를 들어 중복적인 실수를 어느 정도 줄일 수 있다.또 새로운 특성을 실현할 때 변화를 도입하기에 더 적합한 위치가 있다.이 규칙은 일반적으로'설명하고 묻지 마라','Tell, don't ask'로 묘사된다.
결론:
 
앞의 9가지 규칙 중 8가지는 매우 간단하고 실행하기 쉬워서 프로그래머가 대상 프로그램을 대상으로 설계한 성배인 데이터 봉인을 얻는 데 도움을 줄 수 있다.또한 규칙(else를 사용하지 말고 조건 판단 논리를 최대한 간소화)이 있어 프로그래머가 다태를 적절하게 사용하도록 장려한다.또 하나의 규칙은 명명 정책이다. 프로그래머가 일치하고 직접적인 명명 기준을 사용하도록 격려하고 이해하기 어려운 줄임말을 사용하지 않도록 한다.한마디로 코드의 중복을 없애려고 애쓰는 것이다.우리는 매일 복잡한 문제에 직면해야 한다. 우리의 목표는 정련된 코드로 간단하고 아름다운 추상을 표현하는 것이다.

좋은 웹페이지 즐겨찾기