MVC?

MVC은 Model, View, Controller를 줄인 말로, 소프트웨어 개발 패턴을 의미한다. 

MVC Pattern을 왜 써야하는가?

Model과 View를 분리하기 위해서!

그렇다면 Controller는 무슨 역할을 하는가? ➡️ 분리시킨 Model과 View를 연결히키기 위해서

Model과 View는 이렇게 분리를 왜 시키는가? 

➡️ 시각적인 UI를 담당하는 View와 비지니스 로직을 담당하는 Model을 분리시키기 위해서이다. 두 부분이 하는 일과 특성이 다르기 때문에

 

 

Model

모델은 application이 포함해야할 데이터가 무엇인지를 정의한다.

데이터의 상태가 변경되면, 모델은 일반적으로 View에게 알리며, 가끔 Controller에게 알리기도 한다.

 

View

View는 application의 데이터를 보여주는 방식을 정의한다.

 

Controller

Controller는 application의 사용자로부터 입력에 대한 응답으로  Model/View를 업데이트하는 로직을 포함한다.

 

728x90

본 포스팅은 개발하는 주디씨 블로그의 글을 참고하여 작성하였습니다.

 

[Java] 프로젝트, 패키지, 메소드, 클래스 네이밍 규칙

다들 자바 프로젝트를 하면서 한번 쯤은 혹은 여전히 고민하고 계실 네이밍 규칙 Tip을 공유합니다. 공통 대소문자가 구분되며 길이에 제한이 없다. 예약어를 사용해서는 안 된다. 숫자로 시작해

printf-hellojudyworld.tistory.com

 

공통 

  • 대소문자가 구분되며 길이에 제한이 없다.
  • 예약서 사용 X
  • 숫자로 시작하면 안된다.
  • 특수문자는 '_' 또는 '$'만 사용 가능하다.
  • 반의어는 반드시 대응하는 개념으로 사용해야 한다.

 

Project 프로젝트

  • 대/소문자 구분 없이 시작 가능하다.
  • 대문자 사용을 권장한다.

 

Class 클래스

  • 명사로 작성한다.
  • 대문자로 시작한다.
  • Pascal Case를 사용한다. ➡️ 여러 개의 단어를 조합하여 작성하는 경우 각 단어의 첫 번째 글자는 대문자로 한다.
class Cake() {}
class BananaCake() {}

 

Interface 인터페이스

  • Pascal Case를 사용한다.
  • 형용사를 사용한다.

 

Method 메서드

  • 동사로 작성한다.
  • 소문자로 시작한다.
  • Camel Case를 사용한다. ➡️ 여러 개의 단어를 조합하여 만들 경우 맨 첫 글자를 제외한 나머지 단어의 첫 글자는 대문자를 사용하여 구분한다.
eat();
eatCake();
getPrice();

 

  1. 속성에 접근하는 메서드 명의 접두사는 "set" , "get"을 사용한다.
  2. 데이터를 조회하는 메서드 명은 접두사 find를 사용한다.
  3. 데이터를 입력하는 메서드 명의 접두사는 input을 사용한다.
  4. 데이터를 삭제하는 메서드 명의 접두사는 delete를 사용한다.
  5. 데이터를 초기화하는 메서드 명의 접두사는 initialize를 사용한다.
  6. 반환 값의 타입이 boolean인 메서드의 접두사는 is를 사용한다.
  7. 데이터를 불러오는 메서드의 명은 접두사 laod를 사용한다.
  8. 데이터가 있는지 확인하는 메서드명의 접두사는 has를 사용한다.
  9. 새로운 객체를 만든 뒤 해당 객체를 리턴해주는 메서드 명의 접두사는 create를 사용한다.
  10. 해당 객체를 다른 형태의 객체로 변환해주는 메서드 명의 접두사는 to를 사용한다.
  11. 해당 객체가 복수인지 단일인지 구분하는 메서드의 접미사는 s를 사용한다.
  12. B를 기준으로 A를 하겠다는 메소드명의 전치하는 By를 사용한다.

 

Package 패키지

  • 패키지명은 대소문자 모두를 허용하지만 소문자로 하는 것을 원칙으로 한다.
  • 표준 패턴을 따른다. 
    • ex) [com].[Company].[Project].[toppackage].[lowerpackage]
  • 가급적 한 단어 사용을 권장한다.

 

Variable 변수

  • 소문자로 시작한다.
  • Camel Case를 사용한다.
  • 의미가 있는 이름으로 작성하여 변수명만 봐도 사용한 이유를 알 수 있게 지어야 한다.
  • 순서를 의미하고 임시로 쓰이는 정수의 변수명은 i, j, k, m, n을 사용한다. 문자의 경우 c, d, e등을 사용한다.
  • 변수명에 _, $를 사용할 수 있자만 시작 문자로 사용하는 것은 지양한다.
String userName;
int userAge;
int i ; // 주로 반복문에서 사용한다.
char c; // 주로 반복문에서 사용한다.

 

Constant 상수

  • 전부 대문자로 작성한다.
  • Snake Case를 사용하여 '_'로 구분한다.
int MAX_DEPTH = 100;
int MIN_DEPTH = 1;

 

728x90

본 포스팅은 eddy_song.log 블로그 내용을 참고하여 작성하였습니다.

 

객체 지향 프로그래밍을 이해하는 시작점

'객체란 무엇인가?'가 아니라 '왜 객체 지향을 써야 하지?' 부터 시작하자.

velog.io

 

객체 지향을 왜 사용하는가?

객체 지향은 "좋은 코드"를 작성하기 위해 사용한다. 

 

"좋은 코드"는 무엇인가?

1. 변경하기 쉬운 코드

2. 이해하기 쉬운 코드

 

좋은 코드란 기능 추가 및 수정이 쉽고, 다른 개발자나 미래의 내가 보더라도 쉽게 이해할 수 있는 코드를 의미한다.

 

좋은 코드를 작성하려면?

복잡한 프로그램을 작은 단위로 나누고, 묶어서 정리햐야 하다. ➡️ 구조화, 추상화

 

Why OOP? 왜 객체지향을 써야 하는가?

  • "좋은 코드"를 작성하기 위해서
  • 즉, 이해하기 쉽고, 수정이 쉬운 코드를 작성하기 위해서
  • "좋은 코드"를 만들려면 일정한 기준을 가지고 코드를 구조화하고 정리해야 한다.

 

"객체 지향 프로그래밍(OOP)"라는 용어를 만들고 대중화 시킨 앨런 케이가 생각한 OOP의 본질은?

  • 메시징
    • 다른 객체의 데이터나 프로시져가 필요할 때는 메시지 요청을 한다.
    • 메시지를 받는 객체는 스스로 처리 방법을 선택한다.
  • 캡슐화
    • 관련있는 데이터와 프로시져를 찾아서 묶고 다른 객체가 내부를 건드리지 못하게 한다.
  • 동적 바인딩
    • 메시지를 받느 객체는 그때 그때 달라질 수 있다.

 

메시징 + 캡슐화 + 동적 바인딩 = ⭐️

  1. 변경 가능한 공유 데이터 최소화
    • 관련있는 프로시져와 데이터를 묶은 다음, 다른 객체는 접근할 수 없게 하기 때문이다.
    • 다른 객체의 상태를 알아내거나 바꾸려면, 해당 객체가 정해놓은 형식으로 메시지를 보내는 방식밖에 없다.
    • 이걸 "캡슐화"라고 한다.
  2. How(구현) 부분을 쉽게 바꿀 수 있다.
    • "메시지"를 받는 부분만 일관되게 유지한다면, 실제로 그걸 처리하는 코드는 바뀌어도 실행에 문제가 없다.
    • "메시지를 보내는 것"은 메서드(함수)를 호출하는 것과 다르다.
    • 다른 객체가 돈을 달라는 메시지를 보내면, 돈을 어떻게 주는지는 받는 객체가 알아서 결정한다.
  3. 메시지를 실제로 처리하는 객체를 쉽게 바꿀 수 있다.
    • 기능의 변경이 쉬워진다.
    • 메시지를 보내는 코드는 컴파일 타임에 이미 결정되지만, 실제로 어떤 객체가 그 메시지를 받아서 처리할지는 런타임에 결정된다. 이걸 "동적 바인딩"이라고 한다.

 

728x90

+ Recent posts