Function 사용하는 이유

오호 08.18 20:57 조회 272 댓글 0

Label은 수행할 일련의 내용을 묶어두고 필요에 따라 호출하는 방식입니다.

어디서 호출하든 동일한 동작을 합니다.

조금 다른 동작을 만들고 싶다면 새로운 Label을 또 만들어야 하죠.


오토핫키에는 Label 말고 함수(Function)이라는 것도 있습니다.


함수(function)는 전체적으로 비슷한데 조금씩만 달라지는 것들을 구현하는데 용이 합니다.

여기서 "조금씩만 달라지는 것"을 parameter 혹은 변수라고 하겠습니다.


다음 내용을 잠시 살펴보시죠.



1::
    sendinput '/딜 귀염추혼소{Enter}
    sleep 100
return



2::
    sendinput '/딜 파력무참{Enter}
    sleep 100
return


3::
    sendinput '/딜 탈명사식'풍{Enter}
    sleep 100
return
 


/딜 <마법이름> 으로 남은 쿨타임을 보기 위한 hotkey들입니다.

Say Macro랑 비슷합니다.


 

이렇게 동작합니다.



그런데 다른 마법과 함께 사용하다 보니 채팅창이 닫히지 않은 채로 남아있는 경우가 많아서

{Enter} 뒤에 {ESC}를 추가하여 안정적으로 동작하게 바꾸고 싶다고 해보겠습니다.

그리고 sleep 100 이 너무 짧은 것 같아 일괄 300으로 늘리고 싶습니다.


이런 경우 수정해야 할 부분이 꽤 많습니다. 마법이 3개가 아니고 더 많았다면 할 일이 더 늘어나겠죠.




그런데 함수를 사용했었다면 이야기가 달라집니다.



1::CheckSpell("귀염추혼소")
2::CheckSpell("파력무참")
3::CheckSpell("탈명사식'풍")


CheckSpell(Spell) {
    sendinput '/%Spell%{Enter}{ESC}
    sleep 300
    return
}
 


CheckSpell이 함수 이름입니다.

괄호 안에 들어가는 Spell 은 parameter 입니다 ( 위에서 언급한 "조금씩만 달라지는 것" 즉 변수라고 할 수 있습니다.)

예시에서 조금씩만 달라지는 부분은 "귀염추혼소", "파력무참", "탈명사식'풍" 입니다.


이렇게 함수로 만들어 두면 CheckSpell 이라고 하는 부분만 수정해주면

딜체크 하는 모든 macro들을 한번에 수정할 수 있습니다.

한마디로 스크립트 유지 보수가 용이하다고 할 수 있습니다.


그리고 여기에 추가로 "만공" 마법을 추가하고 싶다고 하면


4::CheckSpell("만공")
 

이렇게 큰 어려움 없이 새로운 마법을 추가할 수 있습니다. ( 재사용성이 좋습니다.)


그리고 맨 처음 보여드렸던 방식에 비해

스크립트가 깔끔해지고 함수 이름에 정보가 담기게 되어 이해하기 더 쉬워집니다.




요약하자면 함수는

1. 스크립트 유지 보수가 용이하고

2. 재사용성이 좋고

3. 가독성이 좋습니다.

이런 장점들이 있어 권장되는 방식입니다.


댓글 0