'논리연산자'에 해당되는 글 1건

  1. 2009.06.10 웹쉘에서 배우다
컴퓨터2009.06.10 08:00

처음 무언가를 배우는 사람은 다른 사람이 남긴 것을 보고 배우게 됩니다.
VBScript 를 공부하고 있습니다. 문법은 GUI 관련 부분이 없는 정도의 Visual Basic 와 비슷합니다. PowerShell 과 같이 특정 윈도우 상위만 지원하는 것이 아닌 모든 윈도우에서 사용이 가능하며, 조금은 번거롭지만 닷넷에서도 사용이 가능합니다. 저 같은 사람에게는 정말 가뭄의 단비같은 존재입니다.

요즘 획득한(?) 웹쉘의 내용을 보면서 참 많은것을 느꼈습니다.

이제까지 아무생각 없이 IF 문을 이용해서 특정 문자가 들어있는 부분을 체크했었는데 이 소스가 더 나아 보입니다.
소스1
IF instr(keyword, "\")>0 or instr(keyword, "/")>0 or instr(keyword, ":")>0 or .... then
   ........
End IF

그런데 이번에 본 웹쉘에는 다음과 같은 내용이 있었습니다.
소스2
flag =  instr(keyword, "\")>0 or instr(keyword, "/")>0
flag = flag or instr(keyword, ":")>0
flag = flag or instr(keyword, "|")>0
....
flag = flag or instr(keyword, "&")>0
IF flag then
   ........
End IF

2번째 소스는 flag 라는 변수와 OR 라는 논리 연산자를 이용해서 소스수정이 쉽도록 작성이 되어 있습니다.

OR 논리 연산자 는 입력값이 둘다 False 일 경우 False 를 반환하며, 그외에는 True 를 반환합니다.
입력1 값 입력2 값 결과
0 0 0
0 1 1
1 0 1
1 1 1


소스1과 소스2의 차이는 크게 없습니다. 다만 현제 작성하기 쉬운 것와 나중에 수정하기 쉬운 차이가 있습니다.

가령 체크를 해봐야 할 문자가 10개 정도 된다면 어떻게 될까요.
소스1의 방식으로는 조건문(IF)이 상당히 긴 내용으로 작성이 됩니다. 소스2의 방법으로는 줄(라인)수가 많게 작성이 됩니다.
차이는 조건문의 일부를 수정할때 발생을 합니다. 소스1의 방식은 일단 알아보기가 쉽지 않습니다. 그나마 띄어쓰기라도 했다면 알아보기 쉬울테지만 소스2만큼 쉽지는 않을것입니다.

이렇듯 성능상 차이가 있는 부분은 아니지만 나중에 다시 소스를 보게될 경우를 대비해서 조금이라도 알아보기 쉬운 코드로 작성을 해야 할것 같습니다.

일단 주석부터 추가해야 겠네요. ^^;



결론. 지금 편하자고 막하면 나중에 고생한다.

Posted by Zasfe

댓글을 달아 주세요