cleancode 애플리케이션에 서비스 레이어를 생성해야 하는 좋은 이유 많은 개발자는 애플리케이션 코드를 모델/엔티티 계층, 리포지토리 계층, 서비스 계층 및 컨트롤러로 나누는 디자인 패턴에 익숙합니다. 일부 애플리케이션에서는 엔티티 클래스에서 데이터베이스 스키마를 설명할 수도 있습니다. 리포지토리 계층에 쿼리를 배치하고 이를 사용하여 데이터를 검색하는 반면 컨트롤러에는 각 경로 및 HTTP 메서드에 대한 핸들러가 포함됩니다. 내 저장소 앞에 서비스 계층이 있어... backendcleancodearchitecturewebdev 코드 정리 팁: 매개변수를 일관된 순서로 유지 관련 함수 세트가 있는 경우 항상 일관된 매개변수 순서를 사용하십시오. 이 나쁜 예를 들면 다음과 같습니다. AddSectionToContext 및 AddSectionsToContext에 전달된 매개변수의 순서를 확인하십시오. 상당히 혼란스럽죠? 확실히, 매개변수의 순서가 독자가 기대하는 것과 다르기 때문에 코드를 이해하기가 더 어렵습니다. 그러나 더 나쁜 점은 이 문제는 특히 매개변수가 동... cleancode 상속보다 구성이 필요한 이유는 무엇입니까? 그러나 우리는 다른 블로그 포스트를 위해 그것을 남겨둘 것입니다. 상속은 하나의 자식 클래스(하위 클래스)가 부모 클래스(슈퍼 클래스)로부터 모든 것을 물려받는 OOP의 개념입니다. 우리가 모든 것을 말할 때 그것이 의미하는 것은 해당 슈퍼 클래스의 속성과 기능입니다. 가장 좋은 것은 좋은 예를 제시하는 것입니다. Dog 및 Cat 하위 클래스의 상위 클래스로 Animal 클래스가 있습니다.... javacleancodeandroidkotlin React의 Props 드릴링 토크 React에서 Props 드릴링을 해결하는 두 가지 일반적인 방법이 있습니다. ContextAPI/Redux를 사용하고 React Composition을 사용합니다. React에서 Prop 드릴링을 해결할 때 Context의 단점: 재사용성 예를 들어 User 구성 요소가 깊이 중첩되어 있고 다른 Provider에서 사용하려고 합니다. 다른 컨테이너에서 userData를 사용하려면 어떻게 해... reactjavascriptcleancode 코드 냄새 132 - 예외 범위가 너무 넓음 예외는 편리합니다. 단, 최대한 좁게 TL;DR: Be as specific as possible when handling errors. Fail Fast 원칙 위반 누락된 오류 위음성 예외 처리기 범위를 최대한 좁히십시오 [X] 수동 충분한 테스트 스위트가 있으면 돌연변이 테스트를 수행하여 예외 범위를 최대한 좁힐 수 있습니다. 예외 우리는 가능한 한 외과적으로 예외를 만들어야 합니다. U... webdevprogrammingcleancodepython 코드 냄새 Katas — 우아한 예외 처리 컴퓨터 프로그래밍에서 코드 냄새는 더 깊은 문제를 나타낼 수 있는 프로그램 소스 코드의 특성입니다. 이 블로그 게시물에서 Code Smell kata를 살펴보겠습니다. 단위 테스트를 위해 이 클래스를 어떻게 테스트할 수 있습니까? HttpClient 생성을 다른 클래스로 이동하고 아래처럼 생성자 매개변수로 이 클래스에 전달하거나 Spring 프레임워크를 사용하는 경우 autowired bea... javarefactoritcleancodeprogramming 클린 코드 팁: 클래스에서 너무 많은 가져오기를 사용하지 마십시오. 사실 이 글은 깔끔한 코드를 작성하기 위한 팁이 아니라, 코드 냄새를 지적하는 것을 목표로 하는 글입니다. 물론 코드에서 이 코드 냄새를 발견하면 이를 제거하기 위해 조치를 취할 수 있으며 결과적으로 더 깨끗한 코드가 생성됩니다. 코드 냄새는 쉽게 식별할 수 있습니다. 클래스를 열고 가져오기 목록을 살펴보십시오(C#에서는 파일 맨 위에 있는 using). 다음은 실제 예입니다(물론 이름은 검... cleancode Python Socketio를 사용할 때 별도의 함수 처리기 모듈 이 기사에서는 Socketio 이벤트 핸들러에 대해 별도의 모듈을 가질 수 있는 방법을 보여줍니다. 이 예제에서는 FastAPI와 함께 SocketIO를 사용하지만 이 코드를 SocketIO 전용으로 쉽게 변경할 수 있습니다. 여기에서 FastAPI 애플리케이션을 설정하고 하위 애플리케이션으로 Socketio 서버를 생성하고 마운트합니다. :::참고 fastapi-socketio 여기서는 f... pythonfastapicleancodesocketio 클린 코드 팁: 모든 댓글이 나쁜 것은 아닙니다. 많은 개발자들이 말합니다. All comments are bad! 거짓! 악플이 대부분! 예를 들어, 이 메서드를 살펴보고 주석을 살펴보세요. 여기서 주석은 의미가 없습니다. 메서드 서명을 보고 추론할 수 있는 것과 동일한 내용을 알려줍니다. 이 메서드는 입력 문자열이 유효한 암호인지 확인합니다. 네, 그런 종류의 댓글은 완전히 무의미하며 피해야 합니다. 하지만 그래도 댓글을 작성하는 것이 ... cleancodeprogramming 클린 코드 연습 - 파트 2 수년 동안 코드 리뷰에서 다른 사람들의 코드를 읽으면서 나는 나쁜 코드를 잡는 '눈'을 개발했고, 내가 설계한 시나리오를 읽으면 당신도 그것을 개발할 수 있다고 생각합니다. 내 말은, 버그가 없고 작업을 수행하지만 가능한 한 유지 관리할 수 없다고 가정합니다. 이 시나리오의 문제는 오류 처리가 부족하다는 것입니다. 화학 기호가 발견되지 않으면 기호가 발견되었는지 여부를 쉽게 결정할 수 없기 ... cleancodeprogrammingjavascript 깔끔한 코드 팁: 테스트는 프로덕션 코드보다 훨씬 더 잘 작성되어야 합니다. 읽고 이해하기 쉽도록 코드를 관리해야 합니다. 맞습니까? 오른쪽?? 잘했어요! 그러나 대부분의 개발자는 좋은 프로덕션 코드(시스템에서 실제로 실행되는 코드)를 작성하는 경향이 있지만 테스트 코드는 매우 형편없습니다. 프로덕션 코드는 실행하기 위한 것이지만 테스트는 코드를 문서화하기 위한 것이기도 합니다. 그러므로 시험 뒤에 있는 의미와 이유에 대해 의심이 있어서는 안 됩니다. 이는 또한 독자... cleancodetestingbeginners 댓글 쓰기가 나쁜 이유 짐작하셨겠지만 저는 개인적으로 코드를 설명하기 위해 주석을 작성하는 것에 반대하며 여기에 그 이유를 언급할 수 있는 몇 가지 이유가 있습니다. 읽기 쉬운 테스트와 함께 명확하고 읽기 쉬운 코드를 작성할 수 있다면 어떤 주석도 이를 능가할 수 없습니다. 글쎄요, 저는 여기서 3가지를 말할 수 있습니다: 보시다시피 함수 이름은 많은 것을 말하지 않으므로 단어 대신 더 설명적인 이름을 사용하면 확... cleancodewebdevprogramming 깔끔한 코드 팁: 같은 개념에 같은 이름을 사용하세요. 내가 항상 말했듯이 이름을 짓는 것은 어렵다. 에서 이에 대해 이미 이야기했습니다. 간단하고 일관성 있는 사전을 만들면 동일한 이름으로 동일한 아이디어를 나타내므로 클래스 이름이 더 좋아집니다. 이렇게 하면 코드 가독성과 검색 가능성이 향상됩니다. 또한 클래스 이름만 봐도 그 의미를 파악할 수 있습니다. 유사한 작업을 수행하는 3개의 개체가 있다고 가정합니다. 외부 소스에서 일부 콘텐츠를 다... cleancode 단순해진 깨끗한 코드 - 1부 이 책에서 배운 팁, 요령 및 사례를 모아서 여러 부분으로 게시할 예정입니다. #1 짧은 함수가 더 좋습니다 밥 아저씨가 함수의 길이에 대해 말하는 것은 함수가 작을수록 좋다는 것입니다. 할 수 있다면 좋은 습관입니다. 기본 매개변수 대신 인스턴스 변수를 함수에 전달하는 것은 적절할 때 좋은 생각입니다. 그러나 추출하려는 코드는 함수에 선언된 변수 중 4개를 사용합니다. 이것은 인스턴스 변수... cleancodephpsoftwaredesignprogramming 간단해진 깨끗한 코드 - 2부 마지막 게시물에 더해 이 게시물에서는 의 기술을 계속 소개할 것입니다. 아래 코드 스니펫 중 어느 것이 더 잘 설계되었다고 생각하십니까? 오히려 우리는 데이터를 추상적인 용어로 표현하기를 원합니다. 개체에 포함된 데이터를 가장 잘 나타내는 방법에 대해 진지하게 생각해야 합니다. 따라서 개체의 데이터를 숨기기에 적합한 모든 상황에서 수행할 수 있습니다. Kent Beck은 프로그램을 더 잘 설... cleancodephpsoftwaredesignprogramming 간단해진 깨끗한 코드 - 3부 Each unit should only talk to its friends; don't talk to strangers. Only talk to your immediate friends. 이제 우리는 데메테르의 법칙에 대한 기본적인 이해를 하였으니, 이를 어기지 않기 위해 다음 구조 중 어느 것이 더 낫다고 생각하십니까? 해당 패턴을 구현하는 클래스의 이름에 COMMAND 또는 VISITOR... cleancodephpdesignprogramming TypeScript의 단일 책임 원칙 A class should have just one reason to change. 코드의 모든 클래스는 애플리케이션의 한 부분만 담당해야 합니다. 이 원칙을 따르면 코드의 복잡성이 줄어듭니다. 클래스가 앱의 여러 부분을 담당하는 경우 자주 변경해야 합니다. 따라서 클래스의 한 부분을 변경하면 클래스 자체의 다른 부분이 손상될 위험이 높아집니다. 해결책은 각각 하나의 책임이 있는 여러 클래스... cleancodewebdevtypescriptjavascript TypeScript의 인터페이스 분리 원칙 Clients shouldn’t be forced to depend on methods they do not use. 이 원칙의 이면에 있는 아이디어는 큰 인터페이스보다 더 작고 더 구체적인 인터페이스를 갖는 것이 더 낫다는 것입니다. 많은 기능을 포함하는 인터페이스가 하나만 있는 경우 해당 인터페이스의 클라이언트는 필요하지 않은 동작을 구현해야 합니다. 대신 인터페이스가 더 작은 경우 클라... cleancodewebdevtypescriptjavascript TypeScript의 개방/폐쇄 원칙 Classes should be open for extension but closed for modification. 이 원칙의 기본 아이디어는 기존 클래스를 확장하되 수정해서는 안 된다는 것입니다. 기존 클래스를 수정하면 이미 테스트 및 검토된 코드가 깨질 위험이 있습니다. 이 원칙의 주요 이점은 이전 코드를 건드리지 않고도 새 기능을 추가할 수 있다는 것입니다. 이렇게 하면 원래 클래스의... cleancodewebdevtypescriptjavascript TypeScript의 Liskov 대체 원칙 When extending a class, remember that you should be able to pass objects of the subclass in place of objects of the parent class without breaking the client code. 이 원칙의 목표는 하위 클래스가 상위 클래스의 동작과 호환되는 상태를 유지하는 것입니다. 하위 클래스는... cleancodewebdevtypescriptjavascript TypeScript의 종속성 역전 원칙 Depend upon abstractions, not concretions. 애플리케이션에서 두 가지 유형의 클래스를 구분할 수 있습니다. 데이터베이스에서 읽기 또는 파일 저장과 같은 작업을 수행하는 저수준 클래스입니다. 비즈니스 로직을 구현하고 이러한 하위 수준 클래스를 사용하는 상위 수준 클래스. 이 원칙이 제안하는 것은 높은 수준의 클래스가 구체적인 구현 대신 인터페이스에 의존한다는 것... cleancodetypescriptbeginnersjavascript 'is'로 변수 이름 접두사 지정 특정 이름 지정 주제에 대한 최근 생각을 공유하고 이에 대한 귀하의 의견을 듣고 싶습니다. 'is' 접두사 사용. 내 요점은 코드가 대부분의 경우 코드 없이 더 읽기 쉽다는 것입니다. 대: 어떻게 생각해? 'is' 접두사를 사용합니까? isCheap()과 같이 함수 앞에 'is'를 붙이는 것에 대해 어떻게 생각하십니까? 편집하다: 변수에 is를 사용하는 것에 대해 여전히 의문입니다. 나는 그... discusscleancodeprogramming React의 Props 드릴링 토크 React에서 Props 드릴링을 해결하는 두 가지 일반적인 방법이 있습니다. ContextAPI/Redux를 사용하고 React Composition을 사용합니다. React에서 Prop 드릴링을 해결할 때 Context의 단점: 재사용성 예를 들어 User 구성 요소가 깊이 중첩되어 있고 다른 Provider에서 사용하려고 합니다. 다른 컨테이너에서 userData를 사용하려면 어떻게 해... cleancodereactjavascript 깔끔한 코드 팁: 메서드 인수를 너무 많이 사용하지 마세요. 여러 번 우리는 함수에 너무 많은 매개변수를 추가하는 경향이 있습니다. 반대로 함수에 너무 많은 인수가 필요한 경우 일관된 개체로 그룹화하면 더 간단한 코드를 작성하는 데 도움이 됩니다. 어떻게 할 수 있습니까? 너무 많은 매개변수를 갖는 주요 문제는 무엇입니까? 다음 스니펫을 살펴보십시오. 주소나 사람에 대한 다른 필드를 사용해야 하는 경우 새 매개 변수를 추가하고 새 함수 서명과 일치하도... cleancode 클린 코드 팁: 멘탈 매핑 피하기 모든 이름은 의미 있고 명확해야 합니다. 이름이 명확하지 않으면 다른 개발자(또는 미래의 자신)가 의미하는 바를 잘못 해석할 수 있습니다. 약어가 명백하거나 일반적인 경우가 아니면 이름을 약어로 표시하기 위해 정신적 매핑을 사용하지 마십시오. 이름은 정신적 매핑을 기반으로 해서는 안 되며, 컨텍스트가 없는 경우에는 더욱 그렇습니다. 이 나쁜 예를 들면 다음과 같습니다. WOSpace란 무엇입... cleancode 클린 코드 팁: 테스트용 AAA 패턴: 왜 중요한가요? 많은 개발자들이 이 부분을 과소평가하지만 테스트는 프로덕션 코드보다 훨씬 더 명확하게 작성되어야 합니다. 프로덕션 코드는 애플리케이션에 의해 실행되기 때문에 좋은 테스트를 통해 프로덕션 코드의 동작을 문서화할 수 있기 때문에 이는 사실입니다. 따라서 테스트의 첫 번째 소비자는 개발자 자신입니다. 그렇다면 어떻게 하면 더 나은 테스트를 작성할 수 있을까요? 간단한 요령은 «배열, 행동, 주장»... testingcleancode 새 표준을 만들기 전에 표준 확인 게시물 은 에 처음 등장했습니다. 저는 최근 API의 캐싱 시스템을 우회하는 기능을 요청하는 팀의 백로그 게시판에 티켓을 열었습니다. 컨텍스트를 위해 우리 프런트 엔드 팀은 우리 팀의 API를 사용하여 ElasticSearch에 상당히 많은 요청을 하고 API 게이트웨이의 기능 중 하나는 ~30초 동안 많은 집계 결과를 캐시하는 것입니다. 때때로 그들은 ~30초 캐싱 창 내에서 동일한 쿼리 ... cleancodemailinglist 아름다운 언어와 아름다운 코드 특히 내가 좋아하는 장면이 있는데, 로빈 윌리엄의 캐릭터가 "매우 피곤하다"또는 "매우 슬프다"와 같은 용어를 사용하는 것은 나쁜 습관이라고 설명하는 대신 "기진맥진하다"또는 "침착하다"와 같은 설명적인 단어를 사용해야 합니다! 이것은 내가 이 짧은 기사에서 강조하고 싶었던 요점으로 이어집니다. 아름다운 언어와 아름다운 코드는 전혀 다릅니다. 아름다운 언어는 단순히 한 사람에서 다른 사람에게... cleancodemailinglist
애플리케이션에 서비스 레이어를 생성해야 하는 좋은 이유 많은 개발자는 애플리케이션 코드를 모델/엔티티 계층, 리포지토리 계층, 서비스 계층 및 컨트롤러로 나누는 디자인 패턴에 익숙합니다. 일부 애플리케이션에서는 엔티티 클래스에서 데이터베이스 스키마를 설명할 수도 있습니다. 리포지토리 계층에 쿼리를 배치하고 이를 사용하여 데이터를 검색하는 반면 컨트롤러에는 각 경로 및 HTTP 메서드에 대한 핸들러가 포함됩니다. 내 저장소 앞에 서비스 계층이 있어... backendcleancodearchitecturewebdev 코드 정리 팁: 매개변수를 일관된 순서로 유지 관련 함수 세트가 있는 경우 항상 일관된 매개변수 순서를 사용하십시오. 이 나쁜 예를 들면 다음과 같습니다. AddSectionToContext 및 AddSectionsToContext에 전달된 매개변수의 순서를 확인하십시오. 상당히 혼란스럽죠? 확실히, 매개변수의 순서가 독자가 기대하는 것과 다르기 때문에 코드를 이해하기가 더 어렵습니다. 그러나 더 나쁜 점은 이 문제는 특히 매개변수가 동... cleancode 상속보다 구성이 필요한 이유는 무엇입니까? 그러나 우리는 다른 블로그 포스트를 위해 그것을 남겨둘 것입니다. 상속은 하나의 자식 클래스(하위 클래스)가 부모 클래스(슈퍼 클래스)로부터 모든 것을 물려받는 OOP의 개념입니다. 우리가 모든 것을 말할 때 그것이 의미하는 것은 해당 슈퍼 클래스의 속성과 기능입니다. 가장 좋은 것은 좋은 예를 제시하는 것입니다. Dog 및 Cat 하위 클래스의 상위 클래스로 Animal 클래스가 있습니다.... javacleancodeandroidkotlin React의 Props 드릴링 토크 React에서 Props 드릴링을 해결하는 두 가지 일반적인 방법이 있습니다. ContextAPI/Redux를 사용하고 React Composition을 사용합니다. React에서 Prop 드릴링을 해결할 때 Context의 단점: 재사용성 예를 들어 User 구성 요소가 깊이 중첩되어 있고 다른 Provider에서 사용하려고 합니다. 다른 컨테이너에서 userData를 사용하려면 어떻게 해... reactjavascriptcleancode 코드 냄새 132 - 예외 범위가 너무 넓음 예외는 편리합니다. 단, 최대한 좁게 TL;DR: Be as specific as possible when handling errors. Fail Fast 원칙 위반 누락된 오류 위음성 예외 처리기 범위를 최대한 좁히십시오 [X] 수동 충분한 테스트 스위트가 있으면 돌연변이 테스트를 수행하여 예외 범위를 최대한 좁힐 수 있습니다. 예외 우리는 가능한 한 외과적으로 예외를 만들어야 합니다. U... webdevprogrammingcleancodepython 코드 냄새 Katas — 우아한 예외 처리 컴퓨터 프로그래밍에서 코드 냄새는 더 깊은 문제를 나타낼 수 있는 프로그램 소스 코드의 특성입니다. 이 블로그 게시물에서 Code Smell kata를 살펴보겠습니다. 단위 테스트를 위해 이 클래스를 어떻게 테스트할 수 있습니까? HttpClient 생성을 다른 클래스로 이동하고 아래처럼 생성자 매개변수로 이 클래스에 전달하거나 Spring 프레임워크를 사용하는 경우 autowired bea... javarefactoritcleancodeprogramming 클린 코드 팁: 클래스에서 너무 많은 가져오기를 사용하지 마십시오. 사실 이 글은 깔끔한 코드를 작성하기 위한 팁이 아니라, 코드 냄새를 지적하는 것을 목표로 하는 글입니다. 물론 코드에서 이 코드 냄새를 발견하면 이를 제거하기 위해 조치를 취할 수 있으며 결과적으로 더 깨끗한 코드가 생성됩니다. 코드 냄새는 쉽게 식별할 수 있습니다. 클래스를 열고 가져오기 목록을 살펴보십시오(C#에서는 파일 맨 위에 있는 using). 다음은 실제 예입니다(물론 이름은 검... cleancode Python Socketio를 사용할 때 별도의 함수 처리기 모듈 이 기사에서는 Socketio 이벤트 핸들러에 대해 별도의 모듈을 가질 수 있는 방법을 보여줍니다. 이 예제에서는 FastAPI와 함께 SocketIO를 사용하지만 이 코드를 SocketIO 전용으로 쉽게 변경할 수 있습니다. 여기에서 FastAPI 애플리케이션을 설정하고 하위 애플리케이션으로 Socketio 서버를 생성하고 마운트합니다. :::참고 fastapi-socketio 여기서는 f... pythonfastapicleancodesocketio 클린 코드 팁: 모든 댓글이 나쁜 것은 아닙니다. 많은 개발자들이 말합니다. All comments are bad! 거짓! 악플이 대부분! 예를 들어, 이 메서드를 살펴보고 주석을 살펴보세요. 여기서 주석은 의미가 없습니다. 메서드 서명을 보고 추론할 수 있는 것과 동일한 내용을 알려줍니다. 이 메서드는 입력 문자열이 유효한 암호인지 확인합니다. 네, 그런 종류의 댓글은 완전히 무의미하며 피해야 합니다. 하지만 그래도 댓글을 작성하는 것이 ... cleancodeprogramming 클린 코드 연습 - 파트 2 수년 동안 코드 리뷰에서 다른 사람들의 코드를 읽으면서 나는 나쁜 코드를 잡는 '눈'을 개발했고, 내가 설계한 시나리오를 읽으면 당신도 그것을 개발할 수 있다고 생각합니다. 내 말은, 버그가 없고 작업을 수행하지만 가능한 한 유지 관리할 수 없다고 가정합니다. 이 시나리오의 문제는 오류 처리가 부족하다는 것입니다. 화학 기호가 발견되지 않으면 기호가 발견되었는지 여부를 쉽게 결정할 수 없기 ... cleancodeprogrammingjavascript 깔끔한 코드 팁: 테스트는 프로덕션 코드보다 훨씬 더 잘 작성되어야 합니다. 읽고 이해하기 쉽도록 코드를 관리해야 합니다. 맞습니까? 오른쪽?? 잘했어요! 그러나 대부분의 개발자는 좋은 프로덕션 코드(시스템에서 실제로 실행되는 코드)를 작성하는 경향이 있지만 테스트 코드는 매우 형편없습니다. 프로덕션 코드는 실행하기 위한 것이지만 테스트는 코드를 문서화하기 위한 것이기도 합니다. 그러므로 시험 뒤에 있는 의미와 이유에 대해 의심이 있어서는 안 됩니다. 이는 또한 독자... cleancodetestingbeginners 댓글 쓰기가 나쁜 이유 짐작하셨겠지만 저는 개인적으로 코드를 설명하기 위해 주석을 작성하는 것에 반대하며 여기에 그 이유를 언급할 수 있는 몇 가지 이유가 있습니다. 읽기 쉬운 테스트와 함께 명확하고 읽기 쉬운 코드를 작성할 수 있다면 어떤 주석도 이를 능가할 수 없습니다. 글쎄요, 저는 여기서 3가지를 말할 수 있습니다: 보시다시피 함수 이름은 많은 것을 말하지 않으므로 단어 대신 더 설명적인 이름을 사용하면 확... cleancodewebdevprogramming 깔끔한 코드 팁: 같은 개념에 같은 이름을 사용하세요. 내가 항상 말했듯이 이름을 짓는 것은 어렵다. 에서 이에 대해 이미 이야기했습니다. 간단하고 일관성 있는 사전을 만들면 동일한 이름으로 동일한 아이디어를 나타내므로 클래스 이름이 더 좋아집니다. 이렇게 하면 코드 가독성과 검색 가능성이 향상됩니다. 또한 클래스 이름만 봐도 그 의미를 파악할 수 있습니다. 유사한 작업을 수행하는 3개의 개체가 있다고 가정합니다. 외부 소스에서 일부 콘텐츠를 다... cleancode 단순해진 깨끗한 코드 - 1부 이 책에서 배운 팁, 요령 및 사례를 모아서 여러 부분으로 게시할 예정입니다. #1 짧은 함수가 더 좋습니다 밥 아저씨가 함수의 길이에 대해 말하는 것은 함수가 작을수록 좋다는 것입니다. 할 수 있다면 좋은 습관입니다. 기본 매개변수 대신 인스턴스 변수를 함수에 전달하는 것은 적절할 때 좋은 생각입니다. 그러나 추출하려는 코드는 함수에 선언된 변수 중 4개를 사용합니다. 이것은 인스턴스 변수... cleancodephpsoftwaredesignprogramming 간단해진 깨끗한 코드 - 2부 마지막 게시물에 더해 이 게시물에서는 의 기술을 계속 소개할 것입니다. 아래 코드 스니펫 중 어느 것이 더 잘 설계되었다고 생각하십니까? 오히려 우리는 데이터를 추상적인 용어로 표현하기를 원합니다. 개체에 포함된 데이터를 가장 잘 나타내는 방법에 대해 진지하게 생각해야 합니다. 따라서 개체의 데이터를 숨기기에 적합한 모든 상황에서 수행할 수 있습니다. Kent Beck은 프로그램을 더 잘 설... cleancodephpsoftwaredesignprogramming 간단해진 깨끗한 코드 - 3부 Each unit should only talk to its friends; don't talk to strangers. Only talk to your immediate friends. 이제 우리는 데메테르의 법칙에 대한 기본적인 이해를 하였으니, 이를 어기지 않기 위해 다음 구조 중 어느 것이 더 낫다고 생각하십니까? 해당 패턴을 구현하는 클래스의 이름에 COMMAND 또는 VISITOR... cleancodephpdesignprogramming TypeScript의 단일 책임 원칙 A class should have just one reason to change. 코드의 모든 클래스는 애플리케이션의 한 부분만 담당해야 합니다. 이 원칙을 따르면 코드의 복잡성이 줄어듭니다. 클래스가 앱의 여러 부분을 담당하는 경우 자주 변경해야 합니다. 따라서 클래스의 한 부분을 변경하면 클래스 자체의 다른 부분이 손상될 위험이 높아집니다. 해결책은 각각 하나의 책임이 있는 여러 클래스... cleancodewebdevtypescriptjavascript TypeScript의 인터페이스 분리 원칙 Clients shouldn’t be forced to depend on methods they do not use. 이 원칙의 이면에 있는 아이디어는 큰 인터페이스보다 더 작고 더 구체적인 인터페이스를 갖는 것이 더 낫다는 것입니다. 많은 기능을 포함하는 인터페이스가 하나만 있는 경우 해당 인터페이스의 클라이언트는 필요하지 않은 동작을 구현해야 합니다. 대신 인터페이스가 더 작은 경우 클라... cleancodewebdevtypescriptjavascript TypeScript의 개방/폐쇄 원칙 Classes should be open for extension but closed for modification. 이 원칙의 기본 아이디어는 기존 클래스를 확장하되 수정해서는 안 된다는 것입니다. 기존 클래스를 수정하면 이미 테스트 및 검토된 코드가 깨질 위험이 있습니다. 이 원칙의 주요 이점은 이전 코드를 건드리지 않고도 새 기능을 추가할 수 있다는 것입니다. 이렇게 하면 원래 클래스의... cleancodewebdevtypescriptjavascript TypeScript의 Liskov 대체 원칙 When extending a class, remember that you should be able to pass objects of the subclass in place of objects of the parent class without breaking the client code. 이 원칙의 목표는 하위 클래스가 상위 클래스의 동작과 호환되는 상태를 유지하는 것입니다. 하위 클래스는... cleancodewebdevtypescriptjavascript TypeScript의 종속성 역전 원칙 Depend upon abstractions, not concretions. 애플리케이션에서 두 가지 유형의 클래스를 구분할 수 있습니다. 데이터베이스에서 읽기 또는 파일 저장과 같은 작업을 수행하는 저수준 클래스입니다. 비즈니스 로직을 구현하고 이러한 하위 수준 클래스를 사용하는 상위 수준 클래스. 이 원칙이 제안하는 것은 높은 수준의 클래스가 구체적인 구현 대신 인터페이스에 의존한다는 것... cleancodetypescriptbeginnersjavascript 'is'로 변수 이름 접두사 지정 특정 이름 지정 주제에 대한 최근 생각을 공유하고 이에 대한 귀하의 의견을 듣고 싶습니다. 'is' 접두사 사용. 내 요점은 코드가 대부분의 경우 코드 없이 더 읽기 쉽다는 것입니다. 대: 어떻게 생각해? 'is' 접두사를 사용합니까? isCheap()과 같이 함수 앞에 'is'를 붙이는 것에 대해 어떻게 생각하십니까? 편집하다: 변수에 is를 사용하는 것에 대해 여전히 의문입니다. 나는 그... discusscleancodeprogramming React의 Props 드릴링 토크 React에서 Props 드릴링을 해결하는 두 가지 일반적인 방법이 있습니다. ContextAPI/Redux를 사용하고 React Composition을 사용합니다. React에서 Prop 드릴링을 해결할 때 Context의 단점: 재사용성 예를 들어 User 구성 요소가 깊이 중첩되어 있고 다른 Provider에서 사용하려고 합니다. 다른 컨테이너에서 userData를 사용하려면 어떻게 해... cleancodereactjavascript 깔끔한 코드 팁: 메서드 인수를 너무 많이 사용하지 마세요. 여러 번 우리는 함수에 너무 많은 매개변수를 추가하는 경향이 있습니다. 반대로 함수에 너무 많은 인수가 필요한 경우 일관된 개체로 그룹화하면 더 간단한 코드를 작성하는 데 도움이 됩니다. 어떻게 할 수 있습니까? 너무 많은 매개변수를 갖는 주요 문제는 무엇입니까? 다음 스니펫을 살펴보십시오. 주소나 사람에 대한 다른 필드를 사용해야 하는 경우 새 매개 변수를 추가하고 새 함수 서명과 일치하도... cleancode 클린 코드 팁: 멘탈 매핑 피하기 모든 이름은 의미 있고 명확해야 합니다. 이름이 명확하지 않으면 다른 개발자(또는 미래의 자신)가 의미하는 바를 잘못 해석할 수 있습니다. 약어가 명백하거나 일반적인 경우가 아니면 이름을 약어로 표시하기 위해 정신적 매핑을 사용하지 마십시오. 이름은 정신적 매핑을 기반으로 해서는 안 되며, 컨텍스트가 없는 경우에는 더욱 그렇습니다. 이 나쁜 예를 들면 다음과 같습니다. WOSpace란 무엇입... cleancode 클린 코드 팁: 테스트용 AAA 패턴: 왜 중요한가요? 많은 개발자들이 이 부분을 과소평가하지만 테스트는 프로덕션 코드보다 훨씬 더 명확하게 작성되어야 합니다. 프로덕션 코드는 애플리케이션에 의해 실행되기 때문에 좋은 테스트를 통해 프로덕션 코드의 동작을 문서화할 수 있기 때문에 이는 사실입니다. 따라서 테스트의 첫 번째 소비자는 개발자 자신입니다. 그렇다면 어떻게 하면 더 나은 테스트를 작성할 수 있을까요? 간단한 요령은 «배열, 행동, 주장»... testingcleancode 새 표준을 만들기 전에 표준 확인 게시물 은 에 처음 등장했습니다. 저는 최근 API의 캐싱 시스템을 우회하는 기능을 요청하는 팀의 백로그 게시판에 티켓을 열었습니다. 컨텍스트를 위해 우리 프런트 엔드 팀은 우리 팀의 API를 사용하여 ElasticSearch에 상당히 많은 요청을 하고 API 게이트웨이의 기능 중 하나는 ~30초 동안 많은 집계 결과를 캐시하는 것입니다. 때때로 그들은 ~30초 캐싱 창 내에서 동일한 쿼리 ... cleancodemailinglist 아름다운 언어와 아름다운 코드 특히 내가 좋아하는 장면이 있는데, 로빈 윌리엄의 캐릭터가 "매우 피곤하다"또는 "매우 슬프다"와 같은 용어를 사용하는 것은 나쁜 습관이라고 설명하는 대신 "기진맥진하다"또는 "침착하다"와 같은 설명적인 단어를 사용해야 합니다! 이것은 내가 이 짧은 기사에서 강조하고 싶었던 요점으로 이어집니다. 아름다운 언어와 아름다운 코드는 전혀 다릅니다. 아름다운 언어는 단순히 한 사람에서 다른 사람에게... cleancodemailinglist