본문 바로가기

분류 전체보기

(28)
Spring MVC 패턴 [TIL] 이번에 MVC패턴 세미나를 준비하면서 진짜 머리가 터지는줄 알았다. MVC패턴에 대해서 얼추 알고는 있었지만 정확하게 정의를 내려본적은 없었는데, 남에게 알려주기위해서는 제대로 된 정의를 알고 말씀을 드려야하니까... 어떤부분에서 헷갈려했고, 결국 내가 내린 결론이 무엇인지 적어놓으려고한다! 1. 처음에 알고있던 개념 MVC 패턴은 Model, View, Controller로 역할을 나누어서 코드를 구성하는 일종의 어플리케이션 패턴 Model은 실제 로직이 돌아가는 부분을 뜻한다. 전반적인 데이터 처리 로직이 있는 부분. spring의 service가 이 model로 치환이 된다고 생각함 View는 화면을 구성하는 부분. 처리된 작업을 화면에 띄우는 역할을 한다. Controller는 이런 Model과 ..
스프링 핵심 원리 TIL - 객체지향과 SOLID 좋은 객체지향이란? 객체 지향 특징 추상화, 캡슐화, 상속, 다형성 프로그램을, 객체들의 모임으로 파악하고자 하는것. 각각의 객체는 메시지를 주고받고 데이터를 처리하는것.(협력) 유연하고 변경이 용이하기 때문에 대규모개발에서 많이사용 유연하다? 레고블럭 조립하듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법이라는 뜻 이를 다형성이라고 부름(Polymorphism) 다형성 역할과 구현으로 세상을 구분하는식으로 비유해보자 예시1) 운전자-자동차 운전자라는 역할, 자동차라는 역할이 있음 자동차 구현으로 k3, 아반테, 테슬라모델3를 제작 자동차 역할을 3개의 다른자동차들로 구현을 함 k3를 운전자가 타다가 아반떼로 차를 바꾼다하더라도 운전을 할 수 있음. 어차피 자동차로서의 역할은 똑같이 가졌기때..
Heroku + ClearDB 사용방법[TIL] 작년 여름방학때부터 쫌쫌따리 개발해온 아프디망고의 서버배포를 위해 최근에 Heroku를 사용해서 배포하고, clearDB를 사용하여 서버와 연결하였다. 정말 완벽한 Today....I Learned는 아니지만서도...I Learn은 맞으니까 적어보려고한다. Heroku를 사용한 이유 일단 당연하게도 첫번째 이유는 돈 때문이다. 배포서비스에는 종류가 다양하지만...아프디망고같은 경우에는 실제로 구글 플레이에 출시할 예정이었고, 또한 지원받는 금액이 전무했기때문에 무료 배포 서비스가 필요했다. 그중에 heroku가 가장 인기가 많고 참고할 자료가 많아 선택하게되었다. Heroku에 연결할 수 있는 애드온들이 굉장히 많은데, 그중에 무료 DB 호스팅 애드온도 있다. ClearDB인데, 제약사항이 존재하지만, ..
[클린코드 독서] 5장 - 형식 맞추기 EFUB에서 맛집전공을 개발하면서 절실하게 느꼈던 부분이다. 나는 항상 그전까지는 팀프로젝트를 진행하더라도 별다른 코드컨밴션 없이 진행하곤했는데, EFUB에서 처음으로 팀끼리 코드컨벤션(코드 짜는 형식맞추기)를 진행했었다. 이런 부분을 미리 합의하고 들어가니까 서로의 코드를 이해하기도 쉽고, 한사람은 카멜체로 한사람은 팟홀체로 적는 불상사가 없었다 ^0^/ 하지만 코드컨벤션을 맞춰보는게 처음이라 어떤 형식이 좋은형식인지에 대해 무지했었는데, 클린코드를 통해서 좀더 감을 잡을 수 있었다 1. 적절한 행 길이 소스 코드는 얼마나 길어야 적당할까? - 프로젝트마다 다르지만, 가능하다면 적게 유지하는것이 좋음.(200줄) 소스 코드 순서는 어떻게 해야할까? - 고차원에서 저차원 함수로 자연스럽게 읽히도록 구성 ..
[클린코드 독서] 6장 - 객체와 자료구조 변수를 비공개(private)로 설정하는 이유는 남들이 변수에 의존하지 않게 하고싶어서이다. 그렇다면 왜 많은 프로그래머들은 get set함수를 당연하게 public으로 공개해서 private변수를 외부에 노출할까? (참고로, 아무리 변수가 private이어도 getset함수가 public이면 그건 외부로 변수를 노출하는것이다) → 아무생각없이 get set함수를 설정하곤 하는데 이렇게 코드를 짜는것은 매우 나쁨. 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 항상 고민해야함. 자료추상화 한마디로 interface로 만드는것! get set과 같은 함수를 변수사이에 넣는다해도 구현이 감춰지지않음. 구현을 감추려면 추상화가 필요 자료/객체 비대칭 절차적인 클래스와, 객체지향적인 클래스는 서로 상..
[클린코드 독서] 4장 - 주석 첫페이지부터 글쓴이는 강하게 이야기했다. 주석은 순수하게 선하지 못하다. 주석은 필요악이다. 이전에 자주 함수의 기능을 설명하기 위해 주석을 달곤했는데, 클린코드는 정말 많은 가르침을 주는거같다. 주석은 필요악이다 주석이 필요한 상황에 처하면 코드로 의도를 표현할 방법을 찾자 주석은 나쁜 코드를 보완하지 못한다. 주석으로 달려는 설명을 함수로 만들어 표현하자 좋은 주석이란? 법적 저작권 정보나 소유권 정보 정보 제공 이것도 웬만하면 코드로 설명하기 정규표현식이 무슨뜻인지 설명할때 정도는 사용해도되지만, 정규표현식을 사용하여 데이터를 처리하는 클래스를 만들어서 그쪽으로 코드를 옮긴다면 더 깔끔하다. //kk:mm:ss EEE, MMM dd, yyyy 형식이다. Pateern timeMatcher = Pat..
[클린코드 독서] 3장 - 함수 함수를 복잡하고 중복적이고, 이상한 자료유형을 쓰는거만큼 거지같은게 없다 이건 나도 항상 느끼는 바이다. 구현에 급급해서 대충 함수를 만들면 거의 패치워크로 만든 옷같아서...어느 부분이 어느 기능을 담는지 알아보기어렵다. 메소드 몇개를 추출하고, 이름을 변경하고, 구조를 조금만 손봐도 깔끔해진다. 근데 자꾸...귀찮아서 리팩토링을 안한다... 열심히 살자 작게, 한기능만 하게 만들어라 제일 중요한 규칙 거의 3-5줄 정도밖에 안되게 줄여야함 즉, if/else/while에 들어가는 블록이 한줄정도여야한다는거임 이럴려면, 중첩구조가 생길만큼 함수를 크게 키우지 말아야한다 들여쓰기가 1단, 2단을 넘어서면 안됨 예시로 줬던 첫 목록은 세가지 일을함 (페이지가 테스트인지 확인 / 그러면 설정&해체 페이지 넣..
[클린코드 독서] 2장 - 의미 있는 이름 2장 - 의미 있는 이름을 짓자 소프트웨어에서 이름은 어디나 쓰인다. 변수, 함수, 인수와 클래스, 패키지에도 이름을 붙인다. 이런 이름을 잘 지으면 여러모로 편하다. 그래서 이 장에서는 이름을 잘 짓는 규칙을 소개한다. 1. 의도를 분명히 밝혀라 이름을 지을때 생각해야 하는 부분들 변수의 존재 이유는? 수행 기능은? 사용 방법은? 이것을 생각하고 이름을 짓는다면 주석이 필요하지 않다. 예시 /*BAD*/ public List getThem() { //무엇을 get하는 함수인지 알수없음 List list1 = new ArrayList(); for (int[] x : theList) //theList가 무엇을 담는지 알수없음 if (x[0] == 4) list1.add(x); return list1; } ..