Label은 수행할 일련의 내용을 묶어두고 필요에 따라 호출하는 방식입니다.
어디서 호출하든 동일한 동작을 합니다.
조금 다른 동작을 만들고 싶다면 새로운 Label을 또 만들어야 하죠.
오토핫키에는 Label 말고 함수(Function)이라는 것도 있습니다.
함수(function)는 전체적으로 비슷한데 조금씩만 달라지는 것들을 구현하는데 용이 합니다.
여기서 "조금씩만 달라지는 것"을 parameter 혹은 변수라고 하겠습니다.
다음 내용을 잠시 살펴보시죠.
/딜 <마법이름> 으로 남은 쿨타임을 보기 위한 hotkey들입니다.
Say Macro랑 비슷합니다.
이렇게 동작합니다.
그런데 다른 마법과 함께 사용하다 보니 채팅창이 닫히지 않은 채로 남아있는 경우가 많아서
{Enter} 뒤에 {ESC}를 추가하여 안정적으로 동작하게 바꾸고 싶다고 해보겠습니다.
그리고 sleep 100 이 너무 짧은 것 같아 일괄 300으로 늘리고 싶습니다.
이런 경우 수정해야 할 부분이 꽤 많습니다. 마법이 3개가 아니고 더 많았다면 할 일이 더 늘어나겠죠.
그런데 함수를 사용했었다면 이야기가 달라집니다.
CheckSpell이 함수 이름입니다.
괄호 안에 들어가는 Spell 은 parameter 입니다 ( 위에서 언급한 "조금씩만 달라지는 것" 즉 변수라고 할 수 있습니다.)
예시에서 조금씩만 달라지는 부분은 "귀염추혼소", "파력무참", "탈명사식'풍" 입니다.
이렇게 함수로 만들어 두면 CheckSpell 이라고 하는 부분만 수정해주면
딜체크 하는 모든 macro들을 한번에 수정할 수 있습니다.
한마디로 스크립트 유지 보수가 용이하다고 할 수 있습니다.
그리고 여기에 추가로 "만공" 마법을 추가하고 싶다고 하면
이렇게 큰 어려움 없이 새로운 마법을 추가할 수 있습니다. ( 재사용성이 좋습니다.)
그리고 맨 처음 보여드렸던 방식에 비해
스크립트가 깔끔해지고 함수 이름에 정보가 담기게 되어 이해하기 더 쉬워집니다.
요약하자면 함수는
1. 스크립트 유지 보수가 용이하고
2. 재사용성이 좋고
3. 가독성이 좋습니다.
이런 장점들이 있어 권장되는 방식입니다.