블로그 이미지
초딩입맛제주아재
하고 싶은 것만 하며 살고 싶다

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
2007. 7. 4. 23:33 Programing

OOP를 알게 된 후 부터....

아니 정확하게는 Smalltalk와 디자인 패턴이라는것을 알게 된 후 부터 코딩에 어려움을 겪고 있다.
어떠한 문제가 주어졌을때(코딩 할 일이 생겼을때) 이전에는 머릿속에 생각 나는 것들을 쓱쓱 타이핑 했었지만, 요즈음은 그게 잘 안된다.

아주 간단한 주소록이나 INSERT-SELECT의 단순한 작업에도 OOP를 생각하며 머릿속이 바쁘게 움직인다.
바쁘게만 움직이는걸로 끝난다면 좋겠지만 문제는 여기서 발생한다.
스스로 너무 복잡하게 생각을 끌고가게 되어 손끝으로 생각이 발산되질 못한다.
OOP의 특징인 단순함과 재사용성은 훨씬 뒤의 문제다.

절차지향적으로,Top-Down방식으로 코딩을 하면 금방 마무리 될 작업이지만 OOP로 만들려면 여간 힘든게 아니다.
만들어지고 난 후의 유지 보수를 생각해야 하고 확장을 생각해야 한다.
손쉽게 다른 객체와 융합될 수 있도록 유연하게(느슨하게) 만들어야 하고 그러함에 따라 보다 더 안정하게 만들어야한다.

무엇보다도 힘이 드는 것은 웹이라는 플래폼의 특성 때문이다.

같은 문제라도 윈도우 어플리케이션으로 만드느냐 웹 어플리케이션으로 만드느냐에 따라 생각의 복잡성이 판이하게 달라진다.

Java를 예로 든다면 어플리케이션의 MVC객체를 전부 Java로 만들겠지만 웹의 경우 각각 다른 언어로 만들어야 한다.
물론 Javascript로 만 만들 수 있는 어플리케이션도 있지만 여기서 말하는 웹 어플리케이션이란 PHP,ASP,JSP,Ruby 같은 서버쪽 프로그래밍과 HTML,Javascript,Flash 같은 클라이언트 프로그램과의 결합으로 인해 만들어지는 어플리케이션을 말하는 것이다.
이럴 경우 모델은 서버 프로그래밍으로 컨트롤러는 Javascript로 뷰는 HTML + Javascript로, 각각 다른 언어로 만들어야 하고 최종 어플리케이션은 이들의 결합으로 만들어진다.

클라이언트 프로그램은 사용자가 브라우저로 해당 페이지를 보고 있는 한 그 생명을 유지해야 한다. 특히나 AJAX어플리케이션의 경우 사용자가 작업을 마칠때까지 한 페이지만을 사용하는 경우도 있고 이 경우 단 한번 로딩된 클라이언트쪽 객체들의 역할이 크기 때문에 OOP의 잇점을 최대한 끌어 올릴 수 있다.
그에 반해 서버프로그램은 한번의 HTTP접속으로 일처리를 마친후 생명을 다하고 그 이후의 일은 클라이언트 프로그램의 몫이다. 서버쪽의 객체가 살아서 움직이는 시간이 많지 않다는 것이다.
생명의 주기가 짧은 서버 프로그램에서도 OOP는 필요한 것인가 하는 의문이 들게 되고 바로 이 부분이 내가 겪는 가장 큰 어려움이다.

과연
웹에서(서버 프로그램) OOP는 필요한것인가? 적합한 것인가?
내일도 이 문제로 머리를 싸메야 할 것 같다...

posted by 초딩입맛제주아재