셀프 표현 코드의 특징

11420 단어 코드
코드의 특징을 스스로 표현하다
1. 코드의 반환값의 뜻이 명확하다
신청 절차의 작성을 보아라. 이것은 비자발적인 방식으로 쓴 것이다.
 1 public String registerLesson(int userId, int lessonId) {

 2     int code = checkUserId(userId);

 3     if (code != 0) {

 4         return "user does not exist.";

 5     }

 6 

 7     code = checkLessonId(lessonId);

 8     if (code != 0) {

 9         return "lesson does not exist.";

10     }

11 

12     code = checkLessonExpired(lessonId);

13     if (code != 0) {

14         return "lesson is expired.";

15     }

16 

17     code = checkLessonVacance(lessonId);

18     if (code != 0) {

19         return "lesson has no vacance.";

20     }

21 

22     code = registerLessonRemote(userId, lessonId);

23     if (code != 0) {

24         return "failed to register lesson.";

25     }

26     return "";

27 }

 
상술한 코드는 읽기에 다음과 같은 문제가 있다.코드 변수의 뜻은 끊임없이 변화한다.
2. 반환 값의 String 유형은 상부에서 사용하기 어렵다.
이 코드는 다음 형식으로 자체 표현 방식으로 작성됩니다.
public void registerLesson(int userId, int lessonId) throws BusinessException {

    checkUserId(userId);

    checkLessonId(lessonId);

    checkLessonExpired(lessonId);

    checkLessonVacance(lessonId);

    registerLessonRemote(userId, lessonId);

}

이 두 코드의 쓰기 방식의 차이는 매우 뚜렷하지만, 스스로 표현하는 방식은 다음과 같은 장점이 있다.
1. 부분 변수 없음
2. 코드는 값을 되돌릴 필요가 없다
3. 방법 서명의 이상은 상부 호출에 편리하다.
 
2. 주석이 필요 없음
코드가 주석을 필요로 하는 이유는 코드의 명칭과 파라미터가 이해하기 어렵기 때문이다.예를 들어 (a+b)>>>1;뜻은 이해하기 쉽지 않다.
자표현 코드는 코드의 작성 자체가 자신의 뜻이라고 주장한다.이것도 바로 코드의 뜻을 스스로 표현하는 유래이다.
표현코드를 읽으면 소설을 읽는 것과 같이 식물대전 좀비를 예로 들면 다음과 같다.
1 public abstract class Plant {

2     public Weapon weapon;

3     public Health health;

4 

5     public void fire() {

6          weapon.fire();

7     }

8 }

무기의 정의:
1 public abstract class Weapon {

2     public Bullet bullet;

3     public void fire() {

4          GameWorld.getInstance.append(bullet);

5     }

6 }

이러니저러니 코드는 기본적으로 주석을 필요로 하지 않아도 쉽게 이해할 수 있다.
 
3. 코드 구조가 뚜렷하다
예를 들어 안드로이드 입력법을 쓸 때 입력 방식의 언어 유형을 판정해야 한다. Hiragana, Full-Katakana, Half-Katakana, Full-Alphabet, Half-Alphabet, Half-Number이다.그리고 입력한 키보드 종류, QWERTY 키보드, 카나 키보드, 12키 키보드를 고려해야 한다.
그러면 입력을 판정할 때 코드는 이렇게 쓰여집니다.
 1 public boolean onKey(int primaryCode) {

 2     String keyChar ="";

 3     if (keyMode = QWERTY) {

 4          keyChar = getQwertChar(primaryCode);

 5     } else if (keyMode == JAPANESE_50) {

 6          keyChar = getJapanese50Char(primaryCode);

 7     } else if (keyMode == NUMBER) {

 8          keyChar = getNumberChar(primaryCode);

 9     }

10     appendComposingChar(keyChar);

11 }

위 코드의 각 메서드는 다음과 같은 현재 언어 유형을 결정합니다.
 1 public String getJapanese50Char(int primaryCode) {

 2     switch (language) {

 3     case HIRAGANA:

 4     return HIRAGANA_TABLE[primaryode];

 5     case FULL_KATAKANA:

 6     return FULL_KATAKANA[primaryCode];

 7     case HALF_KATAKANA:

 8     return HALF_KATAKANA[primaryCode];

 9     case FULL_ALPHABET:

10     return FULL_ALPHABET[primaryCode];

11     case HALF_ALPHABET:

12     return HALF_ALPHABET[primaryCode];

13     case HALF_NUMBER:

14     return HALF_NUMBER[primaryCode];

15     }

16 }

마찬가지로 다른 방법도 이렇게 써야 한다.
그러나 키보드의 키를 눌렀을 때 후보 문자를 조립한 것이 아니라 코드를 계속 확장해야 한다.곳곳에서 반복되고 유사할 것이다.
간단한 덮어쓰기는 다음과 같습니다.
1 public interface Language {

2     String getKey(int primaryCode);

3 }
1 public Hiragana implements Language {

2     public String getKey(int primaryCode) {

3          return HIRAGANA[primaryCode];

4     }

5 }

이것은 코드로 하여금 더욱 좋은 확장성을 갖추게 할 것이다.또한 층을 명확하게 나누어 코드를 더욱 쉽게 이해할 수 있다.
 
 
 

좋은 웹페이지 즐겨찾기