분류 전체보기 562

[Java/Algorithm]선형검색과 보초법

선형검색(순차검색)Linear search     이렇게 요소가 직선 모양으로 늘어선 배열에서 원하는 키 값을 갖는 요소를 만날 때까지 차례로 검색합니다.01234첫번째 인덱스 0→1 →2 →3 →4 순서대로 검색합니다.한마디로 아래 내용처럼 반복문(for, while)을 이용해 하나씩 차례로 검색하는 걸 말합니다.종료조건검색 실패 : 찾는 값이 없어 배열의 끝까지 모두 검색한 경우검색 성공 : 찾는 값을 발견한 경우무한 루프위의 while(true) 혹은 for ( ; ; ) 와 같이 무한 루프를 사용하더라도return 혹은 break; 을 통해 빠져나올 수 있습니다. 보초법Sentinel method선형검색의 종료 조건 두가지 중 검색할 값이 없는 경우를 없애종료 조건을 하나로 만드는 방법입니다.검색..

[Java/Algorithm]배열과 클래스

이번 포스트에서는 배열과 클래스를 이용한 알고리즘 풀이를 알아봅니다. Array윤년 구하기연도가 4로 나누어떨어지고yyyy % 4 == 0연도가 100으로 나누어떨어지면 윤년이 아니다.yyyy % 100 != 0연도가 400으로  나누어떨어지면 (100으로 나누어 떨어져도) 윤년이다.yyyy % 400 == 0위 조건을 만족하는 윤년을 지정하여 계산하는전세계적으로 사용하는 시간계산법입니다.알고리즘 문제에 자주 나옵니다.class입력년도 ?이전 날짜 구하기

[CleanCode]시스템 2

확장: 관심사를 적절히 분리해 관리 한다면소프트웨어 아키텍처는 점진적으로 발전할 수 있다.처음부터 시스템에 맞는 규모의 설계는 불가능하다.오늘 주어진 사용자의 요구사항에 맞춰 시스템을 구현해야 한다.→ 이것이 반복/점진적인 애자일 방식의 핵심이다.테스트 주도 개발 TDD, 리팩터링으로 만들어진 깨끗한 코드에선 시스템을 확장하기 쉽다.책에서는 관심사를 잘 분리하지 못한 사례로EJB 1, 2 프레임워크를 예시를 들고있다. 횡단cross-cutting 관심사: 핵심 기능을 가로지르는 기능.관점 지향 프로그래밍(AOP, Aspect-Oriented Programing)는 횡단 관심사에 대처해 모듈성을 확보하는 일반적인 방법론이다.AOP엥서 관점aspect에서 모듈 구성 개념→ "특정 관심사를 지원하려면 시스템에..

📜 CleanCode 2024.10.10

[CleanCode]시스템 1

게시글에 들어가기 전 미리 말하자면 시스템 파트의 결론은 도구를 사용하자로 끝이 납니다.spring framework와 DSL를 사용을 권장하는 걸로요.그럼에도 왜 거의 모두가 프레임워크를 사용하는 지에 대해, 발전 과정을 볼 수 있습니다.  소프트웨어 제작은 도시건설과 같다  제작construction은 사용use과 아주 다르다.소프트웨어 시스템은 (애플리케이션 객체를 제작하고 의존성을 서로 '연결'하는) 준비과정과(준비 과정 이후에 이어지는) 런타임 로직을 분리해야 한다.관심사 분리는 우리 분야에서 가장 오래되고 가장 중요한 설계 기법 중 하나다.관심사 Concern 소프트웨어에서 해결해야 할 특정한 문제나 책임을 의미합니다. 애플리케이션의 각 부분이 담당하는 역할 또는 기능을 가리키는 개념으로, 웹..

📜 CleanCode 2024.10.10

[CleanCode]클래스 2

응집도Cohesion: 클래스 매서드는 클래스 인스턴스 변수를 하나 이상 사용해야 한다. 일반적으로 메서드가 전역변수를 많이 사용할수록 클래스의 응집도가 높다.모든 전역iv를 메서드마다 사용하는 클래스는 응집도가 가장 높다.→ 하지만 이는 가능하지도 바람직 하지도 않다. 그렇지만 우리는 이를 지향한다.변수 참조 설명글2023.01.08 - [☕ 자바 JAVA/☕ 변수와 자료형 Variables & Data Type] - [JAVA]선언위치와 static유무로 구분한 변수종류책에서 말하는 메서드마다 사용하는 인스턴스 변수는non-static이자 global variable(전역 변수)를 말한다.'함수를 작게, 매개변수 목록을 짧게'라는 전략을 따르다 보면몇몇 메서드만 사용하는 전역iv가 많아진다.→ 이는 ..

📜 CleanCode 2024.10.08

[CleanCode]클래스 1

클래스 선언 순서변수 목록정적 공개 상수정적 비공개 변수비공개 인스턴스 변수그 외 변수 목록함수공개 함수비공개 함수는 자신을 호출하는 고 함수 직후에 넣는다공개 변수가 필요한 경우는 거의 없다.즉, 추상화 단계가 순차적으로 내려간다.캡슐화: 변수와 유틸리티 함수는 공개하지 않는 편이 낫다2024.04.02 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA]접근 제어자/제한자 access modifierprivate을 쓰는 게 이상적이다.하지만 같은 패키지 안에서 쓰이는 경우에는 protected나 default를 사용한다.하지만 그 전에 비공개 상태를 유지할 방법을 강구한다.캡슐화를 풀어주는 결정은 언제나 최후의 방법이다.클래스는 작아야 한다→ 책임이 적어야 한다만약 간..

📜 CleanCode 2024.10.08

[IT용어]DSL:Domain Specific Language

DSLDomain Specific Language도메인 특화 언어특정 영역에 최적화된 작은 프로그래밍 언어를 말합니다.특징간결함가독성특화된 영역예시SQL, HTML, Regex(정규표현식)종류내부 DSLJAVA, C언어와 같이 일반적인 프로그래밍 언어로 함수 체인이나 메서드 호출을 통해 DSL처럼 작용할 수 있습니다.외부 DSL완전히 독립된 언어로, SQL이나 HTML이 여기에 속한다.별도의 파서와 인터프리터를 이용해 구현합니다.

[CleanCode]단위 테스트

들어가기 전에 클린코드 저자의 말에 따르면 1997년만 해도 TDDTest Driven Development 개념을 아무도 몰랐다고 한다.당시만 해도 단위 테스트란 프로그램이 '돌아간다'는 사실을 증명하는 일회성 코드에 불과했다. 또한 아직도 클린코드 라는 개념은 현재 떠오르는 개념이며, 실제 업무에서는 상사의 지시대로 개발을 진행하는 것이 바람직하다.깨끗한 테스트 코드 실제 코드가 변하면 테스트 코드도 변해야 한다.→ 테스트 코드가 지저분할수록 테스트코드를 수정하는데 더 많은 시간이 걸리고 실패로 뜰 확률이 높아진다. 테스트 코드는 실제 코드 못지 않게 중요하다.테스트는 유연성, 유지보수성, 재사용성을 제공한다. 코드가 변경된 상황에서 우리는 클릭 한번으로 변경된 코드가 성공이라는 것을 알아야 한다.이..

📜 CleanCode 2024.10.03
반응형