프로그램에서 대칭성은 여러 곳에 존재한다. add() 메소드가 있는 곳에는 remove() 메소드가 있다.
대칭성을 찾아내서 명확히 표현해주면, 코드를 읽기가 수월해진다.

1. 대칭성이 결여된 코드
void process(){
   input();
   count++;
   output();
}

2. 위의 둘째 구문을 수정한 코드
void process(){
   input();
   incrementCount();
   output();
}

3. input과 output 메소드 이름은 목적을 반영하는 데 반해, incrementCount는 메소드 구현을 반영한다.
대칭성에 따르면 왜 카운터를 증가시키는지 생각해봐야 한다.
void process(){
   input();
   tally(); //tally는 일치시키다라는 뜻. 입력을 하나 받고 카운터를 증가시켰으므로 메소드의 목적에 따른 적합한 이름이다.
   output();
}

코드 곳곳에서 비슷한 아이디어가 사용되었다면 대칭성에 따라 아이디어를 일관된 방식으로 표현해야 한다.
중복되는 구현을 제거하기 쉬워진다.
AND