Page 14 -
P. 14

코 틀 린  함 수 는  기 본 적 으 로  메 서 드 다.  자 바 나  다 른  모 든  현 대 적  언 어 와  마 찬 가 지 다.  메 서 드 라 는  코
                          드  블 록 에 는  영 역 (s c o p e)이  있 다.  영 역 이 란  말 은  코 드  블 록  안 에 서  볼  수  있 는  정 의 나  선 언 이  프 로
                          그 램 의  어 떤  범 위 에  속 하 는 지 를  뜻 한 다.  블 록 은  그  자 신 이  둘 러 싸 고  있 는  영 역 을  볼  수  있 을  뿐 만   1 1

                          아 니 라  자 신 의  바 깥 쪽  영 역 을  볼  수  있 고,  추 이 적 (tr a ns ati v e)으 로  자 신 을  둘 러 싼  영 역 을  감 싸 는  더   프
                                                                                                            로
                          바 깥 쪽  영 역 을  볼  수  있 어 서  최 종 으 로 는  가 장  바 깥  영 역 에  이 르 는  모 든  영 역 을  볼  수  있 다.  함 수 나   그
                                                                                                            램
                                                                                                            을
                          메 서 드 가  외 부  영 역 의  상 태 를  바 꾸 는  것( 바 깥  영 역 을  바 꾸 는  것 을  뜻 한 다.  예 를  들 어  메 서 드 가  정  더
                                                                                                            안
                                                                                                            전
                          의 된  클 래 스 는  메 서 드 의  바 깥  영 역 이 다) 이  바 로  효 과 다.                               하
                                                                                                            게
                                                                                                            만
                          일 부  메 서 드( 함 수) 는  값 을  반 환 한 다.  일 부  메 서 드 는  세 계 의  상 태 를  변 경 한 다.  일 부  메 서 드 는  값 을   들
                                                                                                            기
                          반 환 하 는  동 시 에  상 태 를  변 경 하 기 도  한 다.  값 을  반 환 하 는  메 서 드 나  함 수 가  외 부  상 태 를  변 경 하 는
                          경 우  이 를  부 수  효 과 (si d e eff e ct )라 고  한 다.  부 수  효 과 를  사 용 하 는  프 로 그 램 은  잘 못 된  것 이 다.  의 약
                          품 과  관 련 해 ‘ 부 작 용’ 이 라 는  말 은  주 된  약 효  외 에  나 타 나 는  부 수 적 인  효 과 를  뜻 하 기 보 다 는  부 정 적
                          인  효 과 를  뜻 하 는  경 우 가  많 다.  프 로 그 래 밍 에 서  부 수  효 과 는  프 로 그 램 이  반 환 하 는  결 괏 값 에  덧 붙

                          여  프 로 그 램  밖 에 서  관 찰 할  수  있 는  어 떤  변 화 를  뜻 한 다.
                          프 로 그 램 이  결 과 를  반 환 하 지  않 는 다 면  관 찰  가 능 한  효 과 를  부 수  효 과 라 고  부 를  수  없 을  것 이 다.

                          왜 냐 하 면    결 과 를    반 환 하 지    않 는    프 로 그 램 에 서 는    상 태    변 화 가    주 된    효 과 이 기    때 문 이 다.    하 지 만
                          그 런  경 우 에 도  여 전 히 ( 이 차 적 인)  부 수  효 과 가  있 을  수  있 다.  물 론  이 런  부 수  효 과 는 ‘ 단 일  책 임
                          (si n gl e r es p o nsi bilit y)’  원 칙 이 라 는  실 무  지 침 을  위 배 하 는  좋 지  못 한  기 법 이 다.

                          안 전 한  프 로 그 램 은  인 자 를  받 아 서  값 을  반 환 하 는  여 러  함 수 를  합 성 해  만 들 어 진 다.  그 리 고  그 런  함
                          수  합 성 이  프 로 그 램 을  이 루 는  전 부 다.  우 리 는  함 수  안 에 서  어 떤  일 이  벌 어 지 는 지  신 경  쓰 지  않 는
                          다.  왜 냐 하 면  이 론 적 으 로  함 수  안 에 서 는  아 무 런  일 도  벌 어 지 지  않 기  때 문 이 다.  일 부  언 어 는  부 수

                          효 과 가  없 는  함 수 를  제 공 한 다.  그 런  언 어 로  작 성 된  프 로 그 램 은  반 환  값  외 에 는  아 무 런  효 과 도  관
                          찰 할  수  없 다.  하 지 만  실 제 로 는  반 환 하 는  값 이 ( 프 로 그 램 을  실 행 할  때  상 태  변 이 를  통 해  발 생 하 는)
                          효 과 를  계 산 하 고 자  실 행 하 는  새 로 운  프 로 그 램 일  수 도  있 다.  이 런  식 으 로  효 과 를  만 들 어 내 는  프 로
                          그 램 을  반 환 하 는  기 법 은  언 어 와  무 관 하 게  사 용 할  수  있 지 만,  종 종  비 효 율 적 인  기 법 이 라 고  여 겨 진

                          다( 이 에  대 해 서 는  논 란 의  여 지 가  있 다).  그 보 다  더  안 전 한  대 안 은  효 과  계 산  때 문 에  일 어 나 는  상 태
                          변 이 와  프 로 그 램 의  나 머 지  부 분 을  분 리 하 거 나  심 지 어 는  효 과 를  계 산 하 는  부 분 을  최 대 한  추 상 화 하
                          는  것 이 다.  이 와  관 련 된  여 러  기 법 을  7 , 1 1 , 1 2 장 에 서  살 펴 보 겠 다.











                                                                                                       0 3 7
   9   10   11   12   13   14   15   16   17   18   19