게시글
블로그
전체 42024. 10. 03.
0
워밍업 클럽 2기(클린코드, 테스트코드) 과제
Readable Code: 읽기 좋은 코드를 작성하는 사고법(링크)이 글은 위의 강의중 제가 중요하다고 생각한 부분과, 저만의 의견을 덧붙여서 정리해보았습니다.모든 내용과 정확한 내용을 보고싶다면 위의 강의를 수강하여 들으시는 것을 제안 드립니다. SOLIDSRPSingle Responsibility Principle (단일 책임의 원칙)하나의 객체는 하나의 역할만 해야 한다. 하나의 객체에서 하나의 역할만 처리하기 때문에 높은 응집도와 낮은 결합도를 유지하게 된다.하나의 기능을 하나의 객체에서만 처리하기 때문에 처리에 필요한 요소는 하나의 클래스에 존재하여 응집도가 향상된다.하나의 객체에서만 처리하기 때문에 다른 클래스와의 결합도는 약해진다. OCPOpen-Closed Principle (개방 폐쇄 법칙)(기능)확장에는 열려있고, (코드) 수정에는 닫혀있는 방식, 즉, 코드를 수정하지 않고 기능 추가를 할 수 있는 방식인터페이스와 다형성을 이용하여 구현한다.LSPLiskov Substitution Principle상속 관계에서 자식이 부모 클래스의 역할을 변경하거나 영향을 주면 안된다.ISPInterface Segregatin Principle (인터페이스 분리 원칙)인터페이스의 구현한 클래스는 인터페이스의 모든 메소드를 사용해야 한다.문법 상으로 전부 사용해야 하지만, 사용하면 예외(Unsupport Opeartion Exception)를 발생시키는 방식으로 사용하지 않을 수 있다.DIPDependency Inversion Principle (의존성 역전 방식)높은 추상화 객체에서 낮은 낮은 추상화 객체로 의존해야 하지만, 모든 객체는 높은 추상화 객체를 의존해야 한다.낮은 추상화 객체를 참조하면, 구현이 달라졌을 경우 의존하는 모든 객체에 영향이 생긴다.
2024. 09. 30.
0
인프런 워밍업클럽 2일차
Readable Code: 읽기 좋은 코드를 작성하는 사고법(링크)이 글은 위의 강의중 제가 중요하다고 생각한 부분과, 저만의 의견을 덧붙여서 정리해보았습니다.모든 내용과 정확한 내용을 보고싶다면 위의 강의를 수강하여 들으시는 것을 제안 드립니다. 논리 사고의 흐름정리 시스템에서 중요한 과제는 최소의 인지적 노력으로 최대의 정보를 제공하는 것이다.정보를 제공하는 것은 공통된 특징을 추상화하고 범주화하여 정리 시스템을 만드는 것이다.인지적 경제성 : 최소한의 인지로 최대한 성능을 내는 것핵심은 뇌의 메모리를 적게 쓰는 것이다.1. Early returnif-else 절을 사용할 때 두 조건을 동시에 기억해야 하기 때문에 코드 분석하기 복잡해진다.if 조건을 참일 경우 리턴함으로써 else 를 사용하지 않아도 된다. 2. depth 줄이기여러 depth를 메소드로 분리하여 줄이는 방법보이는 depth를 줄이는 것이 아니라 사고 과정의 depth을 줄여야 한다.무작정 1 depth로 만드는 것이 정답이 아니다. 3. 사용할 변수는 가깝게 선언4. 공백라인복잡한 의미 단의를 공백으로 분리5. 부정어는 자제한다.!연산자는 머리 속에서 한번 더 생각해야 하기 떄문에 복잡해진다.부정할 경우 대표할 수 있는 경우 메소드 이름을 변경하고, 대표할 수 없다면 메소드 명에 부정어구를 추가한다.6. 해피 케이스와 예외처리예외값의 유효성을 체크할 경우 외부 세계에서 값이 들어올 경우 접점에서 검사한다.사용자 입력, 객체 생성자, 외부 서버등내가 처리하지 않은 예외는 추후 분석이 가능하도록 콜스택을 출력해둔다.널을 대하는 자세변수에 null이 들어오지 않도록 하는 것이 가장 좋다.return null은 사용하지 않는다. 개발자는 메소드가 null을 리턴하지 않을 경우를 가정하고 메소드를 사용한다.optional을 사용하지 말하야하는 이유호출 비용이 크다.포함한 값의 널값 여부와 자체가 널인지도 확인해야 한다.optional을 사용할 때는 아래 메소드를 최대한 사용한다.orElseGet(), orElseThrow(), ifPresent(), ifPresentOrElse()
2024. 09. 30.
0
인프런 워밍업클럽 1일차
https://www.inflearn.com/course/readable-code-%EC%9D%BD%EA%B8%B0%EC%A2%8B%EC%9D%80%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1%EC%82%AC%EA%B3%A0%EB%B2%95이 글은 위의 강의중 제가 중요하다고 생각한 부분과, 저만의 의견을 덧붙여서 정리해보았습니다.정확한 내용과 더 많은 내용을 듣고싶다면 위의 강의를 수강하여 들으시는 것을 제안 드립니다. 시작하며..지금까지 회사를 다니면서 간단한 CRUD 작업만 하다보니 스프링 프레임워크에서 제공해주는 기본적인 구조로만 작업을 해왔다. 나름 객체지향, 클린코드를 지향하며 코드를 작성했다고 생각했는데 객체지향은 개뿔.. 아무것도 사용하지 않았더라.. 물론 코드는 간단했고, 가독성도 있어보였고, 가독성도 좋더라.왜냐하면 로직 자체가 간단했으니까.. 그래서 이번 기회에 인프런 워밍업 클럭 밴엔드 과정을 진행하면서 매일마다 간단 후기를 작성하고자 한다. 읽기 좋은 코드코딩 작업의 대부분은 코드를 작성하는 시간보다 코드를 읽는 시간이 압도적으로 많다.내가 작성한 코드는 작성하는 순간 레거시 코드가 된다. 다른 개발자가 볼 수 있지만, 내가 될 수도 있수도 있고..!! (내가 작성한 코드는 내가 가장 많이 본다 ㅋㅋㅋㅋ)읽기 좋은 코드는 유지보수 하기 편하고, 내가 업무하기 편해지고, 월급이 올라간다!! 프로그램의 정의프로그램 : 데이터 + 코드잘 추상화된 데이터는 코드로 다루기가 쉬워진다. 추상추상 : 사물을 정확하게 이해하기 위해서 사물이 지니고 있는 여러가지 측면 가운데서 특정한 측면만을 가려내어 포착하는 것 (위키)즉, 중요한 정보는 남기고, 중요하지 않은 정보는 생략하는 것추상의 반대는 구체이다.구체 -> 추상 : 추상화, 추상 -> 코드 : 구체화타입도 데이터의 추상화이다. 이진수 -> 바이트 -> 문자, 숫자 -> 구조체 -> 객체기계어 -> 프로그래밍 언어하드웨어 -> 운영체제 -> 애플리케이션OSI 7계층변수의 이름을 짓는 행위메소드의 추상화 추상화 레벨하나의 영역 안에서 추상화 레벨은 동등해야 한다. 같은 영역(메소드, 블럭 등) 안에서 추상화 레벨이 동일해야 가독성이 좋아진다.
백엔드
2021. 03. 22.
0
aaa
aaa