[CODE] ADODB.Connection.ConnectionString 사용 방법
=============================================
(1) DSN 있는 ODBC 연결 방법 (MS OLE DB for ODBC)
[Provider=MSDASQL;]
{DSN=namelFileDSN=filename};
[DATABASE=database;]
UID=user;
PWD=password
(2) SQL서버 : DSN 없는 ODBC 연결 방법 (MS SQL Server ODBC Driver)
[Provider=MSDASQL;]
Driver={SQL Server};
Server=디비서버이름;
Database=디비이름;
UID=아이디;
PWD=비밀번호
ex)
Driver={SQL Server};
Server=taeyo;
Database=taeyoDB;
UID=taeyo;
PWD=11
(3) Ms-Access : DSN 없는 ODBC 연결방법 (MS Access ODBC Driver)
ex)
Driver={Microsoft Access Driver (*.mdb)};
DBQ=E:NorthWind.mdb;
DefaultDir=E:;
DriverId=25;
FIL=MSAccess;ImplicitCommitSync=Yes;
MaxBufferSize=512;
MaxScanRows=8;
PageTimeout=5;
SafeTransactions=0;
Threads=3;UID=admin;
PWD=;
UserCommitSync=Yes
(4) ORACLE : DSN 없는 ODBC 연결방법 (MS ODBC Driver for ORACLE)
ex)
Driver={Microsoft ODBC Driver for Oracle};
ConnectString=OracleServer.world;
UID=demo;
PWD=demo
(5) SQL서버 : OLE DB 직접 접근 방법 (MS OLE DB for SQL Server)
Provider=SQLOLEDB;
Data Source=디비서버이름;
Initial Catalog=디비이름;
User id= 아이디;
password= 비밀번호;
Trusted Connection=사용자 인증 모드(true:NT인증모드 FALSE:복합모드사용);
Current Language=사용언어식별;
Network Address=Location으로 지정한 SQL Server의 네트워크 주소;
Network Library=Net-Library(DLL)이름(경로나 .dll 파일 확장명 불가);
Use Procedure for Prepare=저장프로시저사용;
Auto Translate=OEM/ANSI문자 변환(TRUE);
Packet Size=바이트단위의네트워크패킷크기(512-32767,기본:4096);
Application Name=클라이언트응용프로그램이름;Workstation ID=워크스테이션식별문자열]
ex)
Provider= SQLOLEDB;
Data Source= taeyo;
Initial Catalog=taeyo;
User id=taeyo;
password= 11
(6) Ms-Access : OLE DB 직접 접근 방법 (MS OLE DB for Access)
Provider=Microsoft.Jet.OLEDB.4.0; Data Source= MDB파일의 물리적인전체경로[;
Jet OLEDB:System Database=작업그룹정보파일의경로와파일이름;Jet OLEDB:Registry
Path=Jet엔진레지스트리키;Jet OLEDB:Database Password=암호]
ex) Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:workMyDb.mdb
(7) Oracle : OLE DB 직접 접근 방법 (MS OLE DB for ORACLE)
Provider=MSDAORA
(8) MS Index Server (MS OLE DB Provider for Microsoft Index Server)
Provider=MSIDXS
(9) MS Active Directory Service (MS OLE DB Provider for Microsoft Active
Directory Service)
Provider=ADSDSOObject; Root=검색 시작할 ADsPath 개체(검색기준);Filter=RFC
960 형식의 검색 필터;Attributes=쉼표로 구분되는 반환될 특성의 목록[; Scope=Base
(기준개체(검색기준)만검색)lOneLevel(한수준만검색)lSubtree(모든하위트리검색)]
[CODE]비베 속도향상 팁 45가지
1. 프로젝트를 컴파일하기 전에, 베이직을 종료하고, 컴퓨터를 재시작하라.
그리고, 프로젝트를 컴파일하게 되면, 메모리에 남아 있는 자질구레한 변수들이 사라
지게 되고, 파일 사이즈를 줄일 수도 있다.
2. 프로젝트를 컴파일하기 전에 사용하지 않는 변수와 서브 프로시져, 선언문, 컨트
롤 같은것을 제거하라. 이것은 파일크기를 상당히 줄여줄 것이다.
3. 프로그램을 종료할 때는 END문을 사용하라.
프로그램의 종료코드나 QueryUnload이벤트에 End문을 사용하면 프로그램이 메모리에
남아 있지 않도록 해 준다.
4. Variant 변수 사용을 자제하라.
변수를 선언할 때 형식을 지정해 주지 않으면 베이직은 자동으로 그 변수를 Variant형
식으로 지정하게 되는데, Variant형식의 변수는 매우 느리기 때문에 프로그램의 성능
을 저하시키는 원인이 된다.
5. 폼의 선언부에 Option Explicit문을 추가하라.
Option Explicit문을 추가하게 되면, 선언되지 않는 변수는 사용할 수 없게 되므로,
프로그램의 오류를 줄일 수 있다.
6. 컨트롤명을 작게 만들어라.
폼이름이나 컨트롤의 이름은 EXE파일에 추가된다. 따라서 이러한 이름들을 작게 만들
면 프로그램의 크기를 줄일 수 있다.
7. 주석을 많이 사용하라.
주석문은 EXE파일에 추가되지 않는다. 대신에 주석문을 많이 사용하게 되면 프로그램
소스의 가독성이 증가되므로, 프로그램 생산성 및 유지보수가 용이해 진다.
8. 스크린 해상도에 주의하라.
사용자의 컴퓨터는 항상 같은 스크린 해상도를 갖는 것은 아니다.
따라서, 낮은 해상도에서 만든 프로그램은 높은 해상도를 갖는 스크린에서는 문제가
될 수 있다. 물론 그 반대의 경우도 가능하다.
9. 프로젝트를 텍스트형식으로 저장하라.
이진형식으로 저장된 프로젝트는 다른 편집기에서 편집하기에도 불편할 뿐더러,실행파
일의 크기를 증가시키는 원인이 된다.
10. 프로젝트를 자주 저장하라.
커다란 프로젝트 작업을 하거나, API로 작성된 코드를 실행할 때는 프로그램이 비정상
으로 종료되는 경우가 발생된다. 이런 경우엔 지금까지 작업한 코드가 사라지게 되므
로 자주 저장하는 습관을 기른다.
11. TEMP디렉토리의 임시파일을 제거하라.
응용프로그램은 여러개의 임시파일을 만드는데, 이 임시파일은 시스템의 성능을 저하
시키는 원인이 되기도 한다. 자주 확인해서 삭제해 주는 것이 시스템의 성능을 향상시
키는 효과를 볼 수 있다. 그러나 실행중인 프로그램의 임시파일을 삭제하면 프로그램
이 비정상적으로 종료하므로 주의해야 한다.
12. Database Transaction을 사용하면 Database 처리 속도를 향상시킬 수 있다.
13.Move메소드는 Top, Left프로퍼티를 설정하는 것보다 빠르다.
14. Msgbox는 Breakpoint가 설정되면, 디버깅할 때 이벤트 순서를 변경할 수 있다.
15. Logical/Integer필드에서 0이 아닌 값을 사용하는 것 보다는 True를 사용하는 것
이 빠르다.>= 0 Then보다
If ANumber Then이 빠르다.
16. 여러라인을 들여쓰기를 하거나 혹은 들여쓰기를 취소할 때는 단축키를 사용하면
효과적이다. Tab키는 선택된 라인을 들여쓰기 하고, Shift-Tab키는 선택된 라인의 들
여쓰기를 해제한다.
17. 컨트롤배열을 사용하지 않고, 폼에 같은 컨트롤을 여러개 만들려면, 컨트롤을 누
를때 Ctrl키를 누르거나, 혹은 원하는 컨트롤 아이콘을 Drag시키면 된다.
18. 폼을 디자인할 때 컨트롤을 빠르게 폼에 놓으려면, 컨트롤 아이콘을 더블클릭하
라.
그러면 폼의 중간에 컨트롤들이 나타날 것이다.
19. 픽쳐박스나 폼의 AutoRedraw속성을 True설정하면 픽쳐박스나 폼의 내용이 왜곡되
지는 않겠지만, 메모리를 많이 차지하는 요인이 되기도 한다.
20. 개체 프로퍼티 윈도우를 호출할 때, 보통 오른쪽 마우스 클릭을 사용하지만, F2키
를 누르면 [개체 찾아보기]윈도우가 호출된다.
21. Boolean변수를 토글할 때는 IF...Then...Else를 사용하는 것 보다는
PreviewOn = Not PreviewOn 과 같이 하는 것이 빠르다.
22. Image컨트롤은 PictureBox컨트롤보다 훨씬 빠르다.
23. 문자열 크기를 검사할 때,> 0 Then보다는
If Len(SomeString$) Then이 빠르다.
24. 두 변수를 효율적으로 스왑하려면 다음 코드를 이용한다.
a = a Xor b: b = a Xor b: a = a Xor b
이렇게 하면 A와 B의 두 변수는 스왑된다.
이 팁은 대부분의 프로그래밑 언어에서 작동한다.
25. 간단하고 효율적인 코드는 저성능의 컴퓨터에서도 효과적으로 작동한다.
26. 컨트롤이 갖는 기본 속성을 이용하면 속도를 증진시킬 수 있다.
텍스트박스를 사용할 때는 txtBox.Text보다는 txtBox가 빠르고,
라벨컨트롤을 사용할 때는 lblLabel.Caption보다는 lblLabel이 빠르다.
27. 작업할 때는 가능한한 작은 크기의 데이타형식을 사용하라.
Long형식이나, Double형식보다는 Integer형식이 빠르다.
28. 디버깅작업할 때, Breakpoints대신에 Debug.Print를 사용하라.
프로그램의 흐름의 중지하지 않고도 효과적인 디버깅이 가능하다.
29. 가능한 한 작은 수의 컨트롤을 사용하라.
컨트롤을 많이 사용하게 되면 프로그램의 성능이 저하되는 원인이 된다.
메모리와 자원도 많이 차지할 뿐더러, 실행속도도 느려지게 된다.
30. 적은 오버헤드로 그래픽을 그리려면 폼에 직접 그래픽을 그리면 된다.
31. SQL문을 사용하는 것 보다는 Index를 이용한 VB코드를 사용하는 것이 빠르다. SQL
은 느리기 때문에 같은 동작을 하는 SQL문을 실행하는 것보다 인덱스를 이용한 VB 코
드를 사용하는 것이 빠르다.
--->> 이 부분에 대해서는 저 자신은 잘못된 것이라고 생각합니다.
SQL문이 VB코드보다 훨씬 빠릅니다. 실례로 제가 우편번호 자동입력기능을 구현하려
고 한 적이 있었습니다. 텍스트박스에서 동이름을 입력하고 엔터키를 치면 주소와 우
편번호가 자동으로 입력되도록 한 것이었습니다. 물론 동일한 이름이 존재할 때는 선
택할 수있는 창이 뜨구요. 근데 여기서 비베코드를 사용할때는 상당한 시간 지연이
있었습니다. 우편번호자료는 거의 8000개 정도가 되니까요. 그래서 SQL문을 사용했는
데 아주 빠른 속도를 보였습니다. SQL은 데이터베이스 전용언어이기때문에 데이터베
이스부분에서는 반드시 필요한 부분입니다. 참고로 아주 적은 자료량에서는 비베 코
드가 오히려 빠를 수도 있습니다.
32. 비슷한 작업을 하는 컨트롤을 배열로 작성하면 코드의 양을 줄일 수 있을 뿐만 아
니라, 처리속도도 향상된다.
33. 간단한 작업을 처리하는 함수는 함수보다는 해당 코드를 작업을 원하는 프로시져
에 직접 코딩하는 것이 빠르지만, 좀 복잡해지거나, 길어지는 코드는 함수로 작성하
면 디버깅도 쉬울 뿐만 아니라, 코드의 양을 줄여 속도도 향상시킬 수 있다.
34. 다국어를 지원하고자 한다면 리소스파일을 이용하면 별다른 작업 없이도 다국어
를 지원할 수 있는 어플리케이션을 만들 수 있다.
35. 조건문을 이용할 때는 For~Next문을 이용하는 것이 가장 빠르다.
36. 리스트박스에 많은 양의 데이터를 한꺼번에 넣을 경우엔 리스트박스를 ReDraw하
기 때문에 속도가 현저하게 느려지는데, 이럴 경우엔 LockWindowUndate API를 사용하
면 된다.
37. 명령버튼의 Click이벤트를 발생시킬려면, Value값을 True로 설정하면 되는데, 이
것보다는 직접 프로시져를 호출하는 것이 빠르다.
Call cmdADD_Click
이것은 명령버튼 뿐만 아니라, 다른 컨트롤에도 동일하게 적용된다.
38.파일에서 배열을 읽고 기록할 때 하니씩 읽는 것보다는 블럭단위로 하는 것이 속도
가 빠르다.
39. 파일을 읽거나 기록할 때는 2진형식으로 작업하는 것이 빠르고, 다양한 작업을 처
리할 수 있다.
40. 비슷한 작용을 하는 상수는 배열로 묶어 사용하면 편리하게 이용할 수 있다.
41. 많은 양의 조건을 처리하는 상황에서는 정상적인 경우를 앞쪽에 모으고, 비정상적
인 경우를 뒤쪽에 모으면, 가독성도 높아지고 더욱 효율적이 된다.
42. 자주 사용하는 문자열은 상수로 선언해서 사용하면 코드양도 줄일 수 있고, 더욱
효과적이다.
43. 간단한 조건검사문이라면 If이나, Select문보다는 IIF나 Switch문을 사용하는 것
이 효과적이다.
44. 코드에서 함수나 서브루틴, 프로퍼티 루틴을 쉽게 찾으려면 Shift-F2키를 누르면
된다.
45. 변수형식 선언을 쉽게하려면, Def를 이용하면 된다.
DefInt i - i로 시작하는 것은 모두 Integer형식....
DefStr s, c - s나 c로 시작하는 것은 모두 String형 변수....
DefInt i-k - i에서 k로 시작하는 것은 모두 Integer형 변수....
DefBool (Boolean)
DefByte (Byte)
DefLng (Long)
DefCur (Currency)
DefSng (Single)
DefDbl (Double)
DefDec (Decimal)
DefDate (Date)
DefStr (String)
DefObj (Object)
DefVar (Variant)
by 스콧 미첼, 『ASP 설계하기』의 저자 이 팁은 견고하고 재사용 가능한 ASP 페이지를 개발하기 위한 설계 방법에 초점을 두어 여러분이 ASP를 설계하고 구축할 때 큰 개념을 이해하도록 한다. 자, 스콧의 제안을 한 번 들어보자.
1. 생각 먼저 해라. 코딩은 그 다음이다.
ASP 개발자들은 보통 프로그래밍 개발에 대해 충분히 생각을 하지도 않고 먼저 코딩을 시작하는 경향이 있다. 예를 들어 특정 데이터베이스 테이블의 내용을 특정 형식으로 나열하는 웹 페이지가 필요하다고 하자. 아마도 대부분의 개발자는 당장 소매를 걷어 올리고 필요한 코드를 바로 작성할 것이다. 모든 코드를 일사천리로 작성하기 전에 우선 한 발 뒤로 물러서서 이 작업에 대해서 더 생각해보고 현재 코드가 앞으로 수행할 어떤 작업과 유사할 것인지를 생각해보는 것이 좋은 방법이다. 분명히 다른 데이터베이스 테이블 안의 내용을 또 다른 형식으로 표시되어야 할 경우가 생길 것이다. 이런 가능성에도 불구하고 여러분은 개발자가 왜 설계에 시간을 투자해야 하는지 의아해 할 것이다. 결국 각각의 단일 작업에서, 코드의 첫 행부터 마지막까지 작성할 때 15분에서 한 시간까지 시간이 걸릴지도 모른다. 왜 스크립트는 변경될 수 있고, 코드를 재사용 가능하게 만들 수 있다는 것에 대해 좀더 신중하게 생각하지 않는가? 또 언젠가 코드를 변경하게 될 때 더 많은 유연성을 제공할 다른 대안을 생각하지 않는가? 코드가 변경될 가능성을 고려하고 설계하는데 투자한 시간은 앞으로 스크립트를 수정해야 할 때 개발 시간을 절약함으로써 결국에는 나중에 보상되는 것이다. 포괄적이고 강력한 스크립트를 생성한다면 쿼리스트링 매개변수로 모든 데이터베이스 테이블을 쉽게 표시할 수 있다. 또 데이터를 어떤 스타일이나 모양으로도 보여줄 수 있다. 이렇게 미래의 수정 과정이나 유사한 스크립트를 새로 생성하기 위한 많은 시간을 절약할 수 있다. 이런 강력한 스크립트는 그저 단순히 데이터베이스 표시 스크립트를 작성하는 것보다 분명히 더 많은 설계 시간(초기 개발 단계에서)을 필요로 한다. 그렇지만 새로운 데이터베이스를 새로운 스타일로 표시하기 위해 강력한 스크립트가 사용될 때마다 항상 개발 시간을 절약할 수 있다. 게다가 두 번째 팁에서 언급하겠지만 강력한 데이터베이스 스크립트는 확실히 버그가 적다. 이 두 요인만으로도 개발 시간과 디버깅 시간을 엄청나게 줄일 수 있다.
2. 코드는 가능한 조금만 작성해라.
이것은 대규모 웹 응용 프로그램을 생성하는데 꼭 필요한 팁이고 저자가 프로그래밍을 할 때 유념하는 첫번째 공리이기도 하다(두 번째 공리는 세 번째 팁에 있다). 이 공리의 이론은 아주 간단하다. 분명히 버그는 코드를 작성하기 때문에 생기는 것이고 따라서 코드를 많이 작성할수록 더 많은 버그가 생기는 것이다. 그리고 응용 프로그램에 오류가 많을수록 더 많은 디버깅 시간이 소요되는 것이다. 물론 이 말은 간단한 기능만을 가지고 있는 소프트웨어를 만들어야 한다거나 옵션이 적어서 코드를 조금만 생성해야 한다는 의미가 아니다. 저자가 말하고 싶은 것은 재사용 할 수 있는 코드를 만들어야 한다는 것이다. 예를 들어 HTML 페이지에서 특정 폼에 대한 서버측 폼 유효성 검사를 수행할 루틴을 만들어야 한다고 하자. 여러분은 단지 이 특정 폼만을 처리하는 클래스가 아니라 여러 다른 HTML 페이지에서 다양한 폼 유효성 검사에도 사용할 수 있는 포괄적인 서버측 폼 유효성 검사 클래스를 구축하기로 마음먹을 것이다. 이 강력한 폼 유효성 검사 코드는 특정 폼과 HTML 페이지에 국한된 폼 유효성 검사기보다 분명히 훨씬 많은 코드를 포함한다. 비록 개발에 많은 시간이 들었지만 이 서버측 폼 유효성 검사 루틴이 다른 HTML 페이지에 있는 다른 폼에서 사용될 때는 루틴을 다시 생성할 필요가 없다. 왜냐하면 이미 포괄적인 폼 유효성 검사 루틴을 작성해놓았지 않은가! 이것이 바로 개발 시간과 디버깅 시간을 절약하는 것이다. 자, 이제 세 번째 팁을 보자.
3. 첫째도 재사용, 둘째도 재사용, 셋째도 재사용.
코드 한 조각이 더 자주 사용될 때 발생하는 버그는 적어진다. 코드 블록은 일련의 입력을 받아서 출력을 생성해내는 블랙박스로 간주될 수 있다. 주어진 입력에 대해 출력은 정확할 수도(버그가 없을 수도) 있고 그렇지 않을 수도(버그가 있을 수도) 있다. 모든 코드 조각을 디버깅 할 때의 어려운 점은 모든 가능한 입력을 계속해서 테스트해야 한다는 것이다. 코드 한 조각을 생성해낼 때 100 퍼센트 버그 없이 완벽하다는 보장은 없다. 실제로도 버그가 없는 코드는 거의 없다. 버그 없이 결과 코드가 완벽하다는 것은 테스트한 사람이 게을러서다. 왜냐하면 훨씬 많은 입력값을 테스트해보아야 하기 때문이다. 코드가 백명, 천명, 그 이상의 사용자에 의해 사용되기 시작할 때 광범위한 입력은 바로 테스트되어야 한다. 완벽하게 사용되어 왔고 어떤 숨겨진 버그도 발견되지 않은 코드 조각은 자주 사용되지 않았다는 의미가 아니라 버그가 없다는 말이다. 코드 블록이 최종 제품으로 배포되면 코드를 테스트하고 디버깅했던 개발자가 아닌 다른 상황에서 많은 테스트에 직면하게 된다. 이것을 차에 비유해보면, "어떤 차가 운전하기에 더 안전한가?"라는 질문에 몇 년 동안의 증거 자료에서 어떤 차의 사고 발생률이 낮은지를 관찰하는 것과 같다. 여러분의 ASP 응용 프로그램에서 버그의 수를 줄이기 위해서는 재사용 가능한 코드를 만들어서 재사용해라. 이전에 재사용 가능한 코드 블록에서 버그를 발견하면 버그를 수정하고 계속 재사용해라. 그러면 앞으로 이 코드를 버그가 없고 100 퍼센트 완벽하다는 자신감을 가지고 다시 사용할 수 있다.
4. 재사용을 위한 방법을 알고 있어라.
재사용에 가장 유용한 두 가지 방법은 클래스와 SSI다. 이 내용에 대해서는 『ASP 설계하기』에서 간략하게 설명하였다. SSI(Server-side includes)는 개발자로 하여금 재사용 가능한 코드(HTML, 서브루틴, 함수나 클래스 집합)를 생성하고 연관된 재사용 가능한 코드를 별개의 파일로 그룹화 할 수 있게 한다. 그런 다음, 이런 함수나 클래스의 서비스가 필요할 때 개발자는 그저 SSI를 사용하여 함수나 클래스를 가져오면 된다. SSI는 이런 코드를 사용하는 ASP 페이지로부터 재사용 가능한 코드를 별도로 유지하도록 지원한다. 재사용 가능한 코드가 변경되었을 때는 SSI를 사용하여 자동으로 변경 사항을 SSI를 사용하는 모든 ASP 페이지로 반영해주기 때문에 이 방법은 유용하다. SSI에 대한 자세한 설명은 저자가 운영하는 사이트의 The Low-Down on #includes를 참고해라. 지금까지 VBScript 클래스는 코드 재사용을 위한 가장 괜찮은 방법이었다. 클래스는 복잡한 작업을 단순하고 사용하기 쉬운 인터페이스로 캡슐화하기 때문에 당연히 사용자에게 설계를 위한 강력한 솔루션을 제공한다. VBScript 클래스가 여러분에게 새로운 것이라면 'Using Classes VBScript classes' 부분을 읽어보자. VBScript5.0이 나오기 이전까지는 클래스가 지원되지 않았다. 5.0 이전의 버전을 사용하고 있다면 최신 버전을 다운로드 할 수 있다. 여러분의 웹 서버에 어떤 버전이 설치되어 있는지를 잘 모르겠으면 'Determining the Scripting Language and Version'을 참고하자.
5. 클래스를 사용해서 복잡한 작업을 캡슐화해라.
ASP 개발자들은 많은 비슷한 작업을 처리하기 위해 단순한 코딩을 반복하고 있다는 것을 스스로 알고 있을 것이다. 예를 들어 데이터베이스 테이블에 대한 웹 기반 관리 페이지를 생성하는 것은 공통적으로 사용되는 ASP 작업으로 그다지 복잡하지 않다. 많은 개발자가 데이터베이스 테이블로부터 레코드를 추가, 갱신, 삭제하기 위한 웹 기반 도구를 생성해야 한다. 여러분이 완전한 웹 기반 관리 도구를 원한다면 이런 다양한 폼을 추가하는 것은 데이터베이스에 있는 모든 테이블에 대해 각각 반복되어야 하는 작업이다. 엄청난 양의 데이터베이스 테이블이 있다면 그만큼 많은 ASP 페이지와 코드가 필요할 것이다. 그리고 이런 코드는 프로그래밍의 첫 번째 공리인 두 번째 팁을 무시하고 있기 때문에 버그가 있다. 분명히 포괄적인 단일 ASP 페이지를 생성해놓으면 현재 데이터베이스 테이블에서 뿐만 아니라 미래의 데이터베이스 테이블에서도 사용할 수 있다. 그렇지만 각 데이터베이스 테이블의 관리 페이지에는 복잡한 매개변수가 필요하기 때문에 이런 강력한 단일 스크립트를 생성하는 데에는 어려움이 있다. 그러나 이런 복잡한 입력 매개변수가 클래스로 포함된다면 최종 개발자의 관점에서 주어진 모든 데이터베이스 테이블에 대한 관리 페이지를 생성하는 것은 클래스의 인스턴스를 생성하고, 프로퍼티를 설정하거나 메소드를 호출하는것 만큼이나 쉬워질 것이다. 클래스를 사용함으로써 복잡한 필수 사양이나 매개변수 혹은 작업 등을 클래스를 사용하는 다른 개발자로부터 숨길 수 있다. 따라서 클래스를 사용하는 개발자의 프로그래밍은 훨씬 쉬워지고, 간단해지며, 가독성이 높아진다. 이 모든 사항은 버그를 줄이는 역할을 한다. 이 주제에 대한 자세한 정보는 'Use Classes to Encapsulate Implementation Complexity'를 참고하자.
스콧 미첼은 넷에서 지도적인 ASP 리소스 중의 하나인 4GuysFromRolla.com의 창시자이자 웹 마스터이다. 스콧은 마이크로소프트의 오피스 그룹을 위한 인트라넷 툴을 제작했고 액티브 서버 페이지를 이용하여 많은 웹사이트를 구축한 경험도 갖고 있다.