본문 바로가기

728x90
반응형

프로그래밍&IT/학습, 책

(22)
[클린 아키텍처] 1) 설계와 아키텍처, 개발 패러다임 (구조적, 객체지향, 함수형) 아키텍처는 시스템을 구체화하는 중요한 설계 결정을 표현하며, 그 결정의 중요도는 변경에 드는 비용으로 측정 - 그레디 부치아키텍처란 프로젝트 초기에 제대로 정할 수 있기를 바라는 결정사항이지만, 제대로 정할 가능성이 그 외 사항들보다 반드시 더 높지는 않다 - 랄프 존슨 프로그램을 동작하도록 만드는 것과 제대로 만드는 것은 전혀 다르다. 1장. 설계와 아키텍처란?"아키텍처"는 저수준의 세부사항과는 분리된 고수준의 무언가를 가리킬 때 흔히 사용되고 "설계"는 저수준의 구조 또는 결정사항 등을 의미할 때가 많으나 아키텍트가 실제로 하는 일을 살펴보면 이런 구분은 무의미.목표 : 필요한 시스템을 만들고 유지보수하는데 투입되는 인력을 최소화하는데 있다.빨리 가는 유일한 방법은 제대로 가는 것. 좋은 S/W 아키..
[클린 코드] 7. 동시성, 개선, 휴리스틱 Ch13. 동시성객체는 처리의 추상화, 스레드는 일정의 추상화 - 제임스 O 코플리엔 동시성과 깔끔한 코도는 양립하기 어렵다.이 장에선 여러 스레드를 동시에 돌리는 이유를 논한다.동시성은 결합 (coupling)을 없애는 전략. what과 when을 분리하는 전략.동시성은 다소 부하를 유발 / 복잡 / 동시성 버그는 재현하기 어렵다.구현하려면 근본적인 설계 전략을 재고해야 한다.동시성 방어 원칙* 단일 책임 원칙 (Single Resp0onsibility Principle, SRP) : 주어진 메서드/클래스/컴포넌트를 변경할 이유는 하나여야 한다 > 동시성은 복잡성 하나만으로도 분리할 이유가 충분동시성 코드는 독자적인 개발, 변경, 조율주기가 있다.독자적인 난관이 있으며 다른 코드에서 겪는 난관과 다르며..
[클린 코드] 6. 창발성 Ch12. 창발성켄트 벡이 제시한 단순한 설계규칙 4가지1  모든 테스트를 실행한다.2. 중복을 없앤다.3. 프로그래머 의도를 표현한다.4. 클래스와 메서드 수를 최소로 줄인다. 결합도가 높으면 테스트 케이스 작성이 어렵다. 낮은 결합도와 높은 응집력이라는  목표를 저절로 달성한다.좋은 이름을 선택한다.함수, 클래스 크기를 가능한 줄인다.표준명칭을 사용한다.단위 테스트 케이스를 작성한다. Template method 패턴? 고차원 중복을 제거할 목적으로 자주 사용하는 기법.디자인 패턴 중 하나로, 행위(Behavioral) 패턴에 속한다.알고리즘의 구조를 정의하면서도 특정 단계의 구현을 서브클래스에 위임하는 방식으로 작동한다.기본적인 처리 흐름(템플릿)을 정의하고, 그 중 일부를 자식 클래스에서 구현할 ..
[클린 코드] 5. 시스템 Ch11. 시스템레이 오지 (MS CTO) "복잡성은 죽음. 개발자에게서 생기를 앗아가며, 제품을 계획하고 제작하고 테스트하기 어렵게 만든다" 시스템 제작(construction) 과 사용(use) 을 분리하라S/W 시스템은 준비 과정 (app 객체 제작, 의존성 연결 등) 과 그 이후의 런타임 로직을 분리해야 한다관심사 분리는 오래되고 중요한 설계 기법 중 하나. 대다수 app은 시작단계라는 관심사를 분리하지 않는다.Factory: 때론 객체가 생성되는 시점을 app이 결정할 필요도 생긴다.의존성 주입 : 사용과 제작을 분리하는 강력한 메커니즘 중 하나확장의사결정을 최적화 : 모듈을 나누고 관심사를 분리하면 지엽적인 관리, 결정이 가능해진다시스템은 도메인 특화 언어 (Domain-Specific Lan..
[클린 코드] 5. 오류처리, 경계, 단위테스트 ch7. 오류처리깨끗한 코드와 오류 처리는 연관성있다. 상당수 코드기반은 전적으로 오류 처리 코드에 좌우된다.오류처리가 중요하지만 프로그램 논리를 이해하기 어려워진다면 Clean Code라 부르기 어렵다. 오류코드보다 예외를 사용하라.Try-Catch-Finally 문부터 작성하라미확인 (unchecked) 예외를 사용하라호출자를 고려해 예외 클래스를 정의한다.정상 흐름을 정의. 비즈니스 논리와 오류 처리가 잘 분리된 코드null 반환하지 마라. 호출자에게 문제를 떠넘기게 된다 > 예외를 던지거나 특수 사례 객체를 반환한다또한 null을 전달하지 마라. 정상적인 인수로 null을 기대하는 API가 아니라면.결론깨끗한 코드는 읽기도 좋아야 하지만 안정성도 높아야. 이 둘은 상충하는 목표가 아니다미확인 (u..
[클린 코드] 4. 객체와 자료구조 Ch6. 객체와 자료구조변수를 private (비공개)로 정의하는 이유? 남들이 변수에 의존하지 않게 만들고 싶어서.하지만 왜 get / set 함수를 당연히 공개 (public)해서 외부에 노출할까? 자료추상화자료를 세세히 공개하기보단 추상적인 개념으로 표현하는 편이 좋다.인터페이스, get/set 함수만으로 추상화가 이뤄지지 않는다.자료/객체 비대칭변수사이에 함수라는 계층을 넣는다고 구현이 저절로 감춰지지 않으며 구현을 감추려면 추상화가 필요하다추상인터페이스를 제공해 사용자가 구현을 모른채 자료 핵심을 조작할 수 있어야 진정한 의미의 클래스아무 생각없이 get/set 추가는 나쁘다// 구체적인 Vehicle 클래스public interface Vehicle { double GetFuelTankCapa..
[클린 코드] 3. 함수 / 주석 / 형식 맞추기 3. 함수첫번째 규칙은 작게, 두번째 규칙은 더 작게함수에서 들여쓰기 수준은 1,2단 내로1가지만 한다. 함수당 추상화 수준은 하나로위에서 아래로 코드를 읽기 좋도록서술적인 이름을 사용한다. 일관성이 있어야 한다 (모듈 내에서는 같은 문구, 명사, 동사를 쓴다)함수 인수는 되도록 줄인다. 많이 쓰는 단항식: 1. 인수질문던지기- FileExists("a.txt") 2. 인수 변환 결과 InputStream FileOpen("a.txt")명령과 조회를 분리하라오류코드보단 예외를 사용하라반복하지마라코딩은 글짓기와 비슷하다. 생각을 기록 후 읽기좋게 다듬는다 4. 주석나쁜 코드에 주석을 달지말고 새로 짜라 - 브라이언 W. 카니핸, P.J 플라우거경솔하고 근거없는 주석은 코드를 이해하기 어렵게 만든다부정확한 ..
[클린 코드] 1. 깨끗한 코드 정의 / 2. 의미있는 이름 클린코드 읽다가 말았는데, 이번에 다시 보고 있다.어디서부터 읽었는지 기억이 안나니 복습도 할겸 첨부터 보긴하는데,시작을 했으면 제대로 한 번 봐야 시간도 아끼는 것 같다. (필요하면 다시 볼수는있지만) 차례1. 깨끗한 코드2. 의미있는 이름 짓기1. 깨끗한 코드코드란?  요구사항을 상세히 표현하는 수단.- 의존성을 최대한 줄여야 유지보수쉬워진다. 깨끗한 코드는 한가지를 제대로 한다- 단순하고 직접적. 잘쓴 문장처럼 읽힌다. 설계자의 의도를 숨기지 않는다. 명쾌한 추상화와 단순한 제어문- 모든 테스트를 통과하며 , 중복이 없다, 시스템 내 모든 설계 아이디어를 표현- 작성자가 아닌 사람도 읽기쉽고 고치기 쉽다. 의미있는 이름. 의존성을 최소화하며. 의존하게되면 의존성을 명확히 정의하도록 한다.- 코드는 ..
"파일은 인터넷 또는 제한 영역에 있거나 웹 표시가 있으므로 ~ " 이상시 처리 심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태 오류 Form1.resx 파일은 인터넷 또는 제한 영역에 있거나 파일에 웹 표시가 있으므로 처리할 수 없습니다. 이러한 파일을 처리하려면 웹 표시를 제거하세요. ~ 개인적인 업무로 소스 파일을 다운로드받고 실행을 하려다보니 위와 같은 문제로 실행이 안된다. Power Shell 실행하고아래의 명령어 그리고 문제가 되는 파일이 있는 폴더 Path를 ""에 입력하고 실행한다gci -Recurse "" | Unblock-File 일단 위처럼 하니 처리는 되는듯..
보안 정책 : 화이트 리스트와 블랙 리스트 이번에 다른 대기업에 단기로 투입이 되었다.예상대로 꽤나 보안정책이 까다롭다..왠만한 사이트들은 모두 막아버린듯?. 보안이 중요한 건 알지만그래도 업무 효율성, 정보 취득성 등을 고려해야 하지 않을까? 하는 단순한 내 생각이다. 이에 보안정책 중 화이트 리스트와 블랙 리스트가 있다고 들었는데헷갈려서 다시 조사해보았다.보안 정책에 대해서 - 화이트 리스트와 블랙 리스트란?보안 정책에서 "화이트리스트"와 "블랙리스트"는 각각 특정 대상에 대해 허용 또는 차단하는 방식으로 보안을 관리하는 방법을 의미합니다.화이트리스트 (Whitelist)정의: 허용된 항목(예: IP 주소, 애플리케이션, URL 등)만 접근을 허가하는 방식.적용 예: 특정 네트워크 접근을 허용할 때 신뢰할 수 있는 IP 주소만 추가하거나, 안..

반응형