코드의 추함(13) - 컨테이너 대신 봉인

2068 단어
처음 이런 코드를 보았을 때, 나의 첫 느낌은 그것이 정말 복잡하다는 것이다.

List<Map<String, String>> configurations;

그러나 이성이 조금만 돌아오면 알아차리기 어렵지 않고 물건이 줄어든다.뭐가 없어졌지?
이 코드를 어떻게 사용하는지 보십시오. 다음은 미리 보기 버전입니다.

for (Map<String, String> configuration : configurations) {
  for (Map.Entry<String, String> entry : configuration.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
  }
}

말하자면 간단하다. 사실 맵에 존재하는 키 값을 맞춰야 한다.대상을 대상으로 하는 프로그램 언어에는 신기한 구조가 있는데, 이를 클래스라고 하는데, 이것은 매우 중요한 특징을 봉인이라고 한다.네, 이 코드는 종류가 적고 봉인이 적습니다.쓸데없는 말은 그만두고 포장해라.

public class ConfigurationItem {
  private String name;
  private String value;
  ...
}

그래서 그 용기에 용기를 끼워 넣었다는 성명은

List<ConfigurationItem> configurations;

클래스가 있고 봉인이 있으면 우리는 앞의 코드 안의

entry.getKey() + " " + entry.getValue()

실제로 이 문자열의 표시를 얻기 위해서일 수도 있으니 차라리 방법을 제공하는 것이 낫다.

public class ConfigurationItem {
  ...
  @Override
  public String toString() {
    return name + " " + value;
  }
}

그래서 앞의 이중 for 순환이 바뀌었다.

  for (ConfigurationItem item : configurationItems) {
    System.out.println(item);
  }

단지 추악함으로 말하자면 이 코드는 이런 극치라고 할 수 없다. 삼오층 끼워 넣는 것도 있다. 만약에 담당하는 것처럼 보이는 프로그래머가 각 층의 수치에 비공식 판정을 더한다면 그 장면은 상당히 장관이다.
용기가 용기를 끼워 넣기 시작하면 봉인을 고려하십시오.

저자: 김종국


정엽, ThoughtWorks회사의 수석 컨설턴트는 십여 년의 기업급 소프트웨어 개발 경험을 가지고 각종 프로그램 설계 언어가 실제 소프트웨어 개발에서 발휘할 수 있는 위력을 탐색하는 데 열중하며 합리적인 소프트웨어 개발 방식을 탐색하는 데 주력한다. ThoughtWorks회사에 가입한 후 민첩한 개발 방법의 실천에 들어가 다른 회사에 민첩한 개발 방법에 대한 컨설팅 서비스를 제공한다.그의 블로그는 꿈의 폭풍이고, 웨이보는 @dreamhead이다.
코드의 추함 (13)
장개봉의 본문에 대한 심사에 감사 드립니다.
InfoQ 중국어 사이트에 기고하거나 콘텐츠 번역에 참여하려면[email protected].또한 시나닷컴 웨이보(@InfoQ)나 텐센트 웨이보(@InfoQ)를 통해 우리를 주목하고 우리의 편집자와 다른 독자 친구들과 교류하는 것을 환영합니다.

좋은 웹페이지 즐겨찾기