분류 전체보기 346

[클린 코드] #3 함수

클린 코드 #3 함수#클린코드40줄이 넘는 FitNesse 함수 코드를 9줄로 리팩터링 했더니 이해하기 매우 쉬워졌다. 이해가 쉬운 이유가 무엇일까? 의도를 분명히 표현하는 함수를 어떻게 구현할 수 있을까? 어떤 속성을 부여애햐 처음 읽는 사람이 프로그램 내부를 직관적으로 파악할 수 있을까?작게 만들어라함수 코드 라인 20줄도 길다. 함수의 의도가 명백하게 드러나도록 최대한 작게 만들어라.블록과 들여쓰기if/else/while 문 등에 들어가는 블록은..

[클린 코드] #2 의미 있는 이름

클린 코드 #2 의미 있는 이름#클린코드이름을 잘 붙이는 규칙에 대해 알아보자.의도를 분명히 밝히자좋은 이름을 지으는데 오래 걸리더라도, 좋은 이름으로 절약하는 시간이 훨씬 더 많다.이름을 지을 때는 다음과 같은 질문에 모두 답할 수 있어야 한다.변수/함수/클래스의 존재 이유는?수행 기능은?사용 방법은?만약 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다.ex) 경과 시간, 경과 날짜int elapsedTimeInDays측정하려는 값과 단위를 표현하는 이름이 필요하다.코드 맥락이 들어나게끔 이름을 작성하자.함축적이고 명시적이지 않은 정보를 드러냄으로써 코드가 명확해질 수 있다.그릇된 정보를 피하자그릇된 단서를 코드에 남기면 안 된다.널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안 된다...

[클린 코드] #1 깨끗한 코드

클린 코드 #1 깨끗한 코드#클린코드나쁜 코드나쁜 코드가 쌓일 수록 팀의 생산성은 떨어진다. 결국 언젠간 재설계하게 된다.(생성형 AI가 던저준 코드를 그대로 복붙해서 프로젝트를 진행하면 이런 상황을 겪게 될 가능성이 높다)개발자는 나쁜 코드의 위험성을 인지하고 상사의 무지한 요구를 거절해야 한다.기한을 맞추기 위해 나쁜 코드를 양산한다고 변명하다면 이는 틀린 말이다. 나쁜 코드를 가지고 개발하면 기한을 맞출 수 없다. 가장 빠른 개발 방법은 코드를 최대한 깨끗하게 유지하는 것이다.깨끗한 코드깨끗한 코드를 작성하려면 깨끗한 코드가 뭔지 부터 알아야 한다.논리가 간단해야 한다.의존성은 최소화하고 각 의존성을 명확히 정의한다.오류를 명시적인 전략으로 철저히 처리한다.보기에도 즐거워야 한다.효율적이여야 한다...

[JPA] 영속성 관리

영속성 관리#Spring/DB/JPAJPA의 핵심 두 가지객체와 관계형 데이터베이스 매핑하기영속성 컨텍스트영속성 관리에 대해 자세히 살펴보자엔티티 매니저 팩토리와 엔티티 매니저영속성 컨텍스트EntityManager.persist(entity);“엔티티를 영구 저장하는 환경”엔티티를 영속성 컨텍스트에 저장한다.DB에 저장하는게 아님영속성 컨텍스트는 논리적인 개념눈에 보이지 않는다.엔티티 매니저를 통해서 영속성 컨텍스트에 접근엔티티의 생명주기비영속 (new/transient)영속성 컨텍스트와 전혀 관계가 없는 새로운 상태영속 (managed)영속성 컨텍스트에 관리되는 상태준영속 (detached)영속성 컨텍스트에 저장되었다가 분리된 상태삭제 (removed)삭제된 상태비영속Member member = new..

Spring/JPA 2024.11.06

[JPA] About JPA

About JPA#Spring/DB/JPADatabase 방언방언 : SQL 표준을 지키지 않는 특정 DB만의 고유 기능각각의 DB가 제공하는 SQL 문법이랑 함수가 조금씩 다르다.JPA는 특정 DB에 종속적이지 않다.hibernate.dialect 속성에 DB를 지정해줄 수 있다.H2 : org.hibernate.dialect.H2DialectOracle 10g : org.hibernate.dialect.Oracle10gDialectMySQL : org.hibernate.dialect.MySQL5InnoDBDialectPostgreSQL : org.hibernate.dialect.PostgreSQLDialect기타 등등 40가지 이상 DB를 지원JPA 구동 방식JPA 매핑@Entity : JPA가 관리..

Spring/JPA 2024.11.06

[Java] 20. Wrapper/Class/System/Random 클래스

래퍼, Class 클래스#Java기본형의 한계자바는 객체 지향 언어이다. 그런데 자바 안에 객체가 아닌 것이 있다. 바로 int , double 같은 기본형(Primitive Type)이다.
한계점객체가 아님: 기본형 데이터는 객체가 아니기 때문에, 객체 지향 프로그래밍의 장점을 살릴 수 없다. 예를 들어 객 체는 유용한 메서드를 제공할 수 있는데, 기본형은 객체가 아니므로 메서드를 제공할 수 없다.추가로 객체 참조가 필요한 컬렉션 프레임워크를 사용할 수 없다. 그리고 제네릭도 사용할 수 없다. (이 부분은 뒤에서 설명한다.)null 값을 가질 수 없음: 기본형 데이터 타입은 null 값을 가질 수 없다. 때로는 데이터가 없음 이라는 상태를 나 타내야 할 필요가 있는데, 기본형은 항상 값을 가지기 때문에..

[우테코/프리코스] Week1. 1주차 프리코스 회고

우테코 Week 1 회고#우테코미션 수행 전화요일에 미션이 열리기 전에, 우테코 깃허브에 가서 여러 docs들을 읽어봤다.먼저 봤던건 PR_CheckList에 나와있는 내용이였다. 여기에는 클린 코드를 위한 체크리스트가 있었다.자바 코드 컨벤션들여쓰기else 예약어 금지원시값과 문자열 포장일급 콜렉션 적용인스턴스 변수를 3개 이하로 줄이자DTO를 제외하고 getter/setter 없이 구현메서드의 인자 수를 제한코드 한 줄에 점(.) 하나만 쓰자메서드가 하나의 일만 담당하도록 구현클래스를 작게 유자하기 위해 노력위 내용 중에서 평소에 신경쓰면서 코딩했던 부분은 “setter를 사용 x”, “메서드 인자 수 제한”, “메서드가 하나의 일만 담당하도록 구현”, “else 줄이기” 정도였던 것 같다. “일급 ..

[AI/Concepts] Agent and Search

에이전트첫주차에서 다뤘던 개념인 에이전트에 대해 살펴보자.에이전트는 액추에이터와 센서를 통해 환경에 맞춰 행동을 한다.에이전트 함수는 모든 상황에서 에이전트가 무엇을 할지를 설명합니다.지각 기록을 사용할수도 안할 수도 있다.에이전트 프로그램(Agent Program)은 에이전트 함수를 물리적 구조(Architecture) 위에서 구현하여 실제로 동작하게 한다.성과 측정은 환경의 상태 변화를 평가하는 데 사용됩니다.완벽한 합리적인 에이전트는 기대되는 성과를 최대화합니다.어떻게 하면 에이전트를 효과적으로 설계할 수 있을까? 일단 PEAS 프레임워크를 이용하면 에이전트를 설계 기준을 명확히 할 수 있다.Performance : 에이전트의 성공을 평가하는 기준 (예: 안전성, 시간, 수익성)Environment..

AI/Concepts 2024.10.18

[AI/Concepts] Data Processing

데이터를 가져다 쓰기 전에 지저분한 데이터를 Cleaning하고, 밸런싱 해주는 과정이 필요하다.Data Filtering, Handling Outliers, Handling Mssing Data, Balancing Data를 해줘야 한다.데이터 필터링 (Data Filtering): 더럽고, 복잡하거나 거친 데이터셋을 처리하는 과정컬럼 단위 필터링 (Column-wise Filtration)행 단위 필터링 (Row-wise Filtration)특정 Condition을 만족하는 얘만 가져올 수 있다. Outlier들을 알아서 빼줄 수 있는 방법을 봐보자.이상치 처리 (Handling Outliers): 단변량 및 다변량 이상치 탐지단변량의 경우, 사분위수 범위(IQR) 또는 Z-점수를 사용다변량의 경우..

AI/Concepts 2024.10.18

[AI/Concepts] Data Analysis

정리데이터 분석이란 데이터를 조사하고, 데이터에서 의미 있는 인사이트를 찾고, 결론을 도출하는 것이다. 데이터 분석 프로세스 (The processes of data analysis) 프로세스로 4가지를 배웠다.표준 프로세스(Standard)KDDSEMMACRISP-DM 데이터 과학자(Data Scientist)와 데이터 분석가(Data Analyst)의 차이점에 대해 살펴봤다. 구분데이터 과학자(Data Scientist)데이터 분석가(Data Analyst)배경(Background)데이터를 기반으로 미래 이벤트 및 시나리오 예측데이터를 통해 의미 있는 통찰 도출역할(Role)비즈니스에 이익을 줄 수 있는 질문을 형성비즈니스 문제를 해결하고 결정을 내림데이터 유형(Type of Data)정형 데이터 및..

AI/Concepts 2024.10.18