MVC 패턴 어플리케이션을 Model - View - Controller 3개의 컴포넌트로 나눠서 개발하는 방식의 디자인 패턴이다. MVC 패턴을 잘 사용하면 사용자 인터페이스(View)와 비즈니스 로직(Model)이 분리되어 서로 영향받지 않고 개발하기 쉽다. 동작 방식 Controller가 사용자의 요청을 받으면 Model의 로직을 사용해 나온 결과를 View에 담아 사용자에게 보여준다. Model model은 데이터와 정보를 가공하는 컴포넌트로 비즈니스 로직을 처리한다. 이때 model은 view, controller와 의존하지 않아야 한다. View view는 사용자 인터페이스 요소를 나타내는 컴포넌트로 model을 이용해 이를 시각적으로 보여주는 역할을 한다. view는 controller를 몰..
주석은 나쁜 코드를 보완하지 못함 표현력 풍부, 깔끔, 주석 거의 없는 코드 >>>>> 복잡, 어수선, 주석 많이 달린 코드 코드로 의도 표현하기 코드만으로 의도 설명하기 어려운 경우 존재함 != 코드는 훌륭한 수단이 아님 //직원에게 복지 혜택 받을 자격 있는지 검사 if((employee.flags & HOURLY_FLAG) && (employee.age>65) if(employee.isEligibleForFullBenefits()) 주석으로 달려는 설명을 함수로 만들어 표현하기 좋은 주석 법적인 주석 ex) 각 소스 파일 첫머리에 주석으로 들어가는 저작권 정보, 소유권 정보는 필요함 모든 조항, 조건 열거하는 대신 표준 라이센스나 외부 문서 참조해도 됨 정보 제공하는 주석 때로는 기본적인 정보를 주..
참조형 변수 어떤 값이 저장되어 있는 주소를 값으로 가짐 (기본형은 실제 값(data)을 저장함) 기본형 (boolean, char, byte, short, int, long, float, double) 제외한 나머지 타입 객체의 주소 저장 C언어와 달리 참조형 변수 간의 연산 할 수 없음 선언 시 변수 타입으로 클래스의 이름을 사용 - 클래스의 이름이 참조변수의 타입이 됨 상수와 리터럴 (constant & literal) 상수 constant 값을 저장할 수 있는 공간 한 번 값 저장하면 다른 값으로 변경할 수 없음 변수 타입 앞에 'final' 붙여주면 됨 선언과 동시에 초기화해야함 리터럴 literal 값을 의미 상수가 저장공간으로 정의되어서 구분하기 위해 부르는 다른 이름 변수 : 하나의 값 저..
소스파일의 이름은 public class 이름과 일치해야 함 public class가 없으면 소스파일의 이름은 소스파일 내의 어떤 클래스 이름으로 해도 상관 없음 하나의 소스파일에 둘 이상의 public class가 존재하면 안됨 자주 발생하는 에러 cannot find symbol cannot resolve symbol 저장된 변수, 메서드 찾을 수 없음 선언되지 않은 변수/메서드 사용할 경우 변수, 메서드 이름 잘못 사용한 경우 발생함 Exception in thread "main" java.lang.NoSuchMethodError: main 클래스 내에 main 메서드가 존재하지 않을 경우 메서드 선언부 'public static void main(String[] args)'에 오타 존재하는 경우 ..
작게 만들기 블록, 들여쓰기 if/else문, while문 등에 들어가는 블록은 한 줄이어야 함 - 보통 여기서 함수 호출함 (감싸는 함수도 작아지고 코드 이해도 쉬워짐) 중첩 구조 생길만큼 함수 커지면 안됨 (들여쓰기 수준은 1,2단 넘으면 안됨) 하나만 하기 함수는 한 가지만을 잘 해야 함 지정된 함수 이름 아래에서 추상화 수준 하나인 단계만 수행 - 한 가지 작업만 하는 것 의미 있는 이름으로 다른 함수 추출 가능 - 그 함수는 여러 작업 하는 것 함수 당 추상화 수준 하나로 할 것 함수가 확실히 '한 가지' 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야 함 추상화 수준 getHtml() - 아주 높음 String pagePathName = PathParser.render(pagepat..
이름 잘 짓는 규칙 의도 분명히 밝히기 따로 주석이 필요 없을 정도로 변수의 존재 이유 수행 기능 사용 방법 그릇된 정보 피하기 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용하면 안됨 - hp, aix, sco (유닉스 플랫폼이나 변종 가리키는 이름이라 사용하면 안됨) 실제 List가 아니면 accountList라고 명명하지 않음 - 계정 담는 컨테이너가 실제 List가 아니면 안됨 - accountGroup, bunchOfAccounts, Accounts 라 명명할 것 - 실제 컨테이너가 List라도 컨테이너 유형을 이름에 안 넣는게 좋음 서로 흡사한 이름 사용하면 안됨 유사한 개념은 유사한 표기법 사용할 것 일관성 떨어지는 표기법은 그릇된 정보임 의미 있게 구분하기 컴파일러나 인터프리터만 통과하려..
나쁜 코드를 짜면 계속해서 나쁜 코드를 짜게 되고 결국 효율성이 극도로 떨어져서 0에 수렴하게 됨 코드 읽는 시간과 짜는 시간 비율이 10 대 1을 훌쩍 넘겨서 처음부터 코드를 잘 짜야 함 체크아웃할 때보다 좀 더 깨끗한 코드를 체크인한다면 코드는 절대 나빠지지 않음 -> 변수 이름 하나 개선, 조금 긴 함수 하나 분할, 약간의 중복 제거, 복잡한 if문 하나 정리하는 것으로 충분함 이 책은 Agile Software Development: Principles, Patterns, and Practices (PPP)의 프리퀄임 PPP에서 설명하는 다섯 가지 원칙 SRP (The Single Responsibility Principle) : 클래스에는 단 한가지 변경 이유만 존재해야 함 OCP (The Op..