프로젝트를 하면서 얻은 깨달음에 대한 조언 부탁드립니다

kws4679의 이미지

안녕하세요 이제 막 학부생 4학년을 보내면서 인턴으로 방학을 지새우는

예비 프로그래머 입니다 ^^;;

거창하게 깨달음이라고 까지 하기에는 뭣하지만.... 그냥 이번에 모바일 앱 프로젝트를

하면서 느꼈던 기술적인 내용들을 생각해 보았는데 혼자서의 생각으로는 아무래도

정리도 잘 안되고 정보도 한계가 있어 선배님들의 조언을 구하고자 합니다. 아무쪼록

관련되거나 관련은 되지 않더라도 하고싶으신 말씀 해주시면 감사하겠습니다 ^^

1. 프론트 컨트롤러

이런것을 프론트 컨트롤러라고 하는지조차 잘 모르겠지만 제가 말하고자 하는것은

어떤 시스템을 만들때 가장 처음으로 외부와 단절되는 클래스를 의미하는 것입니다

말인즉

objective c 라면 직접 코드 내에서 NSObject 라던가 여러가지 제공되는 클래스들을

직접적으로 생성, 할당하지 않고 각각을 상속하는 클래스를 만들어서 2차적으로 코드내에서

활용하거나, 라이브러리를 사용할 경우 라이브러리에서 제공하는 객체를 직접 생성하지않고

(설령 오픈소스더라도) 마찬가지로 내가 만들 시스템내에서 사용할 새로운 클래스를

라이브러르 클래스로부터 상속받아서 사용하는 것을 말하고자 합니다

이렇게 하면 예를들어 어떤 객체가 생성되어 활동하는 모든 내용에 내가 원하는 행동(메소드)

를 추가하고자 할때 커스터마이징 하기 불가능한 라이브러리 객체에 비해 새롭게 구성한

1차적인 클래스에 추가만 하면 쉽게 쓸수 있지 않을가 하는 생각이 듭니다

실제로 선배님들께서는 기타 라이브러리 클래스를 사용할때 어떤 식으로(그냥 코드 내에서

필요할때 생성하고 해제하거나..) 하는지도 궁금합니다!!

2. 특정 상황에 맞는 설계, 구현 알고리즘?

사용자 인터페이스 측면에 있어서 대부분은 비슷한 작동과 비슷한 로직을 거치게 되므로

대게 구현이 비슷하다고 생각..합니다 그런점에 있어서 특정한 상황에서 적절한 설계

및 구현을 암기하고 있거나 어느정도 숙지하고 있다면 크게 고민하지 않고 적절한

선택을 빠르게 할수 있다고 생각하는데요

예를들어 사용자의 비밀번호를 변경하는 동작에서 새롭게 커스터마이징한 키보드 뷰를

띄우는 경우를 들어보겠습니다. 이때 고객이 커스터마이징된 보안 키보드 뷰를

이전 암호 입력, 새로운 암호 입력, 새로운 암호 입력 확인 을 연속적으로

세번 띄워서 확인하게 하고 동일한 화면에서 주민등록번호 입력, 암호 입력확인

뷰를 띄우게 하라고 요청하였습니다.

얼핏보면 엄청 간단해 보여서 그냥 대충 보안 키보드 뷰를 세번 push 하면 되겠지

했는데 키보드의 입력된 내용을 현재 객체에서 관리해야 한다는 점에 있어서

고생을 했습니다. 결국에는 다음에 떠야 할 키보드 뷰를 순번을 설정하고 현재 뷰

내부에 플래그를 만들어 보안 키보드 뷰를 push하기 이전에 다음 순번을 넣어서

관리하였습니다.

구구절절이 설명이 길었지만, 간단해 보이는 그리고 어쩌면 앞으로도 많이 쓰게될

위와 같은 상황에 있어서 미리 사람들이 찾아낸 구현 방법을 알았더라면 좀더

쉽고 빠르게 접근할수 있었을 것이라 생각합니다. 결론적으로 특정한 상황에서

구현하는 설계 방법에 대한 정보와 위와 같은 상황이면 어떤 방법이 최적이었을까

하는 조언 부탁드리겠습니다...

shint의 이미지

중복글 삭제

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

shint의 이미지

1. 프론트 컨트롤러'라는 개념은 제가 잘 모르겠지만...
어떻게든. 빌드'가 되어야 할거라고 생각됩니다.

그것을 없애려면
- 외부 스크립트'를 사용한다.
- 가변적인 메모리'로 사용한다. (구조체'나 클래스'라기보다는...) 어떻게 보면. 둘다. 똑같은거죠.
결국. APM'을 생각하시면 쉽게 답이 나오리라 생각됩니다.

2. 설계나... 구현이나...
결국. 하나의 객체'와 또다른 객체'간의 흐름'과 순서'를 알기 쉽게 정해줄 수 있는게 좋습니다.

HTML에 DIV나 FRAME
FLASH에 MovieClip 등과 같이. 무엇이든 담아서 보여주고 반응할 수 있는 그릇'(객체)가 있다면.
(그런 메모리와 해당 좌표영역'등에 대한 기능'을 통신? 하는것)
그리고. 그런것을 쉽게 만들어 나갈 수 있는 도구'가 있다면... (플래시9 이나 나모웹에디터... 등등)
원하시는 방향대로 설계나 구현... 등등 다양한것이 될것 같습니다.

굳이 우리가 무언가를 만들지 않더라도...
이미 그런것이 너무나도 잘 체계화된 세상'이라는 생각입니다.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.