refactoring 리팩토링은 그만한 가치가 있었습니다. 리팩토링으로 다음 단계가 더 쉬워집니다. 이번 주 작업은 내 OpenSSG 코드를 리팩토링하는 것입니다. 관리하기 쉬운 방식으로 코드를 분해하고, 누구나 코드를 더 쉽게 이해할 수 있도록 더 나은 이름을 지정하고, 오류를 줄이고 단위 테스트에서 오류를 찾는 기능을 만드는 것의 아름다움을 보았습니다. 협동조합을 하다보니 리팩토링의 중요성을 더 실감하게 되었습니다. 기능을 구현하는 동안 코드를 ... javaopensourcerefactoringstaticsitegenerator Django 앱의 이름을 바꾸는 방법 처음에 에 대한 MVP(최소 실행 가능한 제품)를 만들었을 때 전체 Django 프로젝트가 우선순위에 관한 것이라고 생각했습니다. 몇 년 후 저는 Django 프로젝트가 SaaS(Software as a Service)에 관한 것이며 우선 순위 지정은 SaaS가 작동하는 데 필요한 모든 기능의 일부일 뿐이라는 것을 깨달았습니다. 깨끗하고 잘 정리된 코드를 갖도록 앱 이름을 바꿔야 했습니다. ... djangointermediateadvancedrefactoring Rector를 사용하여 PHP 7.4에서 8.1로 안전하게 업그레이드 현재 안정적인 마지막 PHP 버전은 8.1이며 이라는 도구를 사용하여 업그레이드할 예정입니다. Rector는 매우 편안한 방식으로 새로운 구문으로 넘어갈 수 있도록 도와줄 것입니다. composer.json에서 수동으로 버전을 변경하는 것과 함께 PHP 8.1을 사용하도록 환경도 변경했습니다. 더 깨끗한 방법이 있을 수 있으므로 이것에 대해 완전히 확신할 수는 없지만 작곡가가 모든 패키지를 ... refactoringlaravelrectorphp Extraindo Constantes de Números Mágicos Olá, esse é o meu primeiro post da série refatoração, no qual vou mostrar o que estou aprendendo com o curso Refactoring do O primeiro post vai ser sobre extrair constantes de números mágicos. 상상해보십시오 que você tem o segu... refactoringrubybraziliandevs RuboCop ToDo 수정 자동화 이 기사에서 을 소개하겠습니다. RuboCop에는 기존 범죄를 감지하고 .rubocop_todo.yml라는 파일을 자동으로 생성하는 기능이 있습니다. 이 파일은 할 일 목록 역할을 하므로 위반 사항을 점진적으로 수정할 수 있습니다. 이 메커니즘은 기존 프로젝트 중간에 새로운 Lint 도구를 도입하거나 기존 Lint 도구를 업그레이드하여 새로운 규칙을 도입할 때 매우 강력합니다. 풀 요청 생성... refactoringrubyrubocop Refactoring React: 경로 기능을 통한 페이지 경로 관리 React 웹 애플리케이션에서는 페이지 간에 리디렉션이 있는 것이 일반적입니다. 그리고 컨텍스트 외부의 다른 페이지를 가리키는 URL 경로를 빌드하는 React 구성 요소가 있는 것이 일반적입니다. 이 경우 OrderDescription 구성 요소는 제품 페이지에 대한 경로를 만들고 Link 에 값을 전달합니다. 여기서 문제는 OrderDescription가 ProductPage 구성 요소에... refactoringjavascriptreact 역 방법 리팩토링 다음은 Kent Beck의 을 읽으면서 오늘 배운 편리한 리팩토링 기술입니다. 하지만 먼저 문제가 무엇입니까? 때로는 다른 개체에서 다른 메서드를 호출하기 때문에 읽을 수 없는 메서드가 있습니다. 메서드는 이미 작고(그러나 읽을 수 없음) 한 가지 작업을 수행하기 때문에 메서드를 추출할 수 없습니다. 다음은 간단한 예입니다. 예가 복잡하지는 않지만 진행 상황과 누가 누구에게 전화하는지 이해하... rubyrefactoring 서비스를 사용하여 콜백을 피하는 방법. 종종 프로그래머는 콜백을 남용하여 결국 코드가 혼란스럽고 명확하지 않다는 것을 완전히 이해하지 못합니다. 콜백을 사용하지 않는 방법에는 여러 가지가 있습니다. 오늘은 서비스를 사용하여이를 수행하는 방법을 알려 드리겠습니다. 코드를 보자: 이 코드의 문제점은 무엇입니까? 우리는 명백하지 않은(마법적인) 행동을 취합니다. 매개변수의 일련 번호에 대한 데이터를 전달하지 않으며 이 값을 어디에도 명... callbackrefactoringrailsruby 리팩토링 #6: Rector를 사용하여 Laravel의 코드 품질 향상 에서 그들의 첫 번째 페이지 지침을 읽는 동안 나는 가능한 한 밤새 전체 프로젝트에 뛰어들어 리팩토링하기로 결정했습니다. 저는 PHP 7.4 환경에서 Laravel 8 프로젝트를 실행하고 있으며 간단한 코드 품질 개선을 처리하는 다음과 같은 간단한 구성으로 시작했습니다. 이것은 대부분이 오늘날까지 여전히 문자열 버전을 사용하기 때문에 오래된 Laravel 프로젝트에 환상적입니다. IDE가 U... laravelrefactoringphpwebdev 리팩토링 #8: 죽은 것은 절대 실행되지 않을 수 있습니다. 때때로 우리는 이 작은 세부 사항을 잊어버리고 도달할 수 없는 진술의 흔적을 남기고 그냥 넘어가는 경향이 있습니다. 다음은 죽은 코드 조각의 매우 노골적인 예입니다. 이라는 자동 도구가 있는데, 이 도구는 이와 같이 죽은 코드를 찾아서 제거하거나 그 존재를 알려주는 데 탁월합니다. IDE와 마찬가지로 주석 없이 필요한 자동 완성 기능을 얻을 수 있습니다. 이 중복 문서에 대해 마음에 들지 않... laravelrefactoringphpwebdev 사용을 중지하십시오 ||= 항상 오리 연산자||=는 initialize 메서드에서 인스턴스 변수를 초기화하는 대신 인스턴스 변수를 느리게 초기화하는 데 사용됩니다. 이것은 매우 간결하지만 다른 언어로 코딩한 후 처음 Ruby에 왔을 때 이상하다는 것을 알았습니다. 인스턴스 변수를 초기화하는 경우 초기화 프로그램을 사용하지 않는 이유는 무엇입니까? 지연 초기화 패턴은 필요하지 않을 수 있는 비용이 많이 드는 계산 실행을 피하... readabilityrefactoringruby 객체 간 기능 이동 좋은 소프트웨어의 핵심은 모듈성! 따라서 메서드가 자신이 속한 클래스보다 다른 클래스의 기능을 더 많이 이용할 때 메서드 이동 기법을 이용해서 의존성이 떨어지게 해야함 메서드가 제일 많이 사용하는 클래스에 비슷한 내용의 새 메서드를 작성하고 기존의 메서드는 대리 메서드로 전환하거나 삭제함 ✅ 리팩토링 전의 소스 Account클래스에는 계좌 유형마다 당좌대월 금액을 계산하는 기능이 있는데 나중... 세미나refactoringrefactoring 데이터 구성 setter, getter 메서드를 작성해서 두 메서드를 통해서만 필드에 접근하도록 하는 기법 하위클래스가 메서드에 해당 정보를 가져오는 방식을 재정의하거나 데이터 관리에서 유연함을 가짐 ✅ 리팩토링 전의 소스 ✅ 리팩토링 후 소스 📑 References... 세미나refactoringrefactoring 조건문 단순화 다른 사람의 코드를 보거나 내가 코드를 짜다보면 복잡한 내용이 조건문에 들어가는 경우가 있음 이 기법의 목적은 조건이 있는 함수를 추출하여 코드를 읽기 쉽게 만드는 것 ✅ 리팩토링 전의 소스 if문 안에 조건이 복잡해.... charge에 대입되는 값들도 너무 복잡해... ✅ 리팩토링 후 소스 조건들을 함수로 만들어서 대입함! 코드는 늘어났짐나 알아보기 편해짐 같은 결과를 내는 조건문이 연속... 세미나refactoringrefactoring [자바 코딩의 기술] 2. 코드 스타일, 자바 API 다듬기 speedPreset에 의해 targetSpeed가 결정되는데 이 때 개발자들은 선택할 수 있는 speedPreset의 옵션을 알 수 없음 + 컴파일러는 코드가 알지 못하는 수를 입력하지 못하도록 막을 수 없음 → 코드가 난해해짐과 동시에 오류 발생 확률이 올라감 1번의 코드에서 setPreset에는 모든 정수가 들어갈 수 있음 → 즉, 내부에서 처리할 수 있는 0, 1, 2 외에도 다양한 ... 자바 코딩의 기술독서refactoringJavaJava 리팩터링 9장 역할이 둘 이상인 변수가 있다면 쪼개야 한다. 변수를 선언한 곳과 값을 처음 대입하는 곳에서 변수 이름을 바꾼다. 이 변수에 두 번째로 값을 대입하는 곳 앞까지의 모든 참조(이 변수가 쓰인 곳)를 새로운 변수 이름으로 바꾼다 두 번째 대입 시 변수를 원래이름으로 다시 선언한다. 테스트 한다. 매 반복에서 변수를 새로운 이름으로 선언하고 다음 번 대입 때까지의 모든 참조를 새 변수명으로 바꾼다... refactoringrefactoring [자바 코딩의 기술] 1. 코드 정리 생기초 조건문을 쓸 때 부정표현 if(!isTrue()) 보다 if(isTrue()) 처럼 !가 들어가는 부정은 사용하지 않는 게 좋다 → 긍정의 표현은 부정의 표현보다 코드의 이해도를 높이는데 도움이 됨 조건문이 3개 이상 쓰일 경우 간소화를 하는 게 좋음 → 이 때 간소화 하는 조건문 덩어리들이 공통적으로 사용되는 부분이 있다면 메소드(함수)로 빼내는 게 좋음 x && y || z → (x &&... 자바 코딩의 기술독서refactoringJavaJava 떠먹여주는것이 아닌, 내가 찾아 떠먹고 싶게 만들어주는 코캠 고마워! 2주차의 마무리..! ft. typescript 너 내가 이해하고 말꺼야 (Code Camp FE 6기) 왜냐면 부족한 알고리즘 문제는 전날 예습하거나 복습을 미리 해가기도 하고, 아침엔 수업에 필요한 부분 보충하거나 예습이 더 필요한 날도 있기 때문에..! 오늘 내가 스스로 풀기 힘들었던 알고리즘 문제 sort() - 배열의 모든 원소를 적절한 위치에 정렬 후 해당 배열을 반환 join() - 배열의 모든 원소를 연결해 하나의 문자열을 반환하는 메서드 -2.이문제는 스스로 생각해내지도 못했고,... 구조분해할당codegeninstanceof ElementtypescriptPrettierearly exiteslinkdestructing assignmentrefactoringcodegeneratorPrettier Clean Architecture Part 3: Principles SRP 를 위반하는 이 클래스는 다음과 같이 서로 성격이 다른 method 를 가지게 된다. 여기서 문제는 만약 getWorkingHours 함수를 바꾸게 되면 서로 다른 actor (finance and HR team) 에게 영향을 준다는 것이다. 이러한 문제는 서로 다른 actor 가 의존하는 코드를 너무 가까이 배치했기 때문에 발생한다. 위 사례에서 finance, HR 각각의 개발자가... clean architecturerefactoringRobert.C.MartinRobert.C.Martin Refactoring 체크리스트 이러한 console.log가 최종 결과물에 남아있다면 가독성을 해칠 수 있습니다. 하지만 밑의 firstName과 lastName이라는 변수명을 보면 각각의 변수가 이름과 성을 나타내고있다는것을 바로 알 수 있습니다. good의 예시에서는 변수명을 보고 이 배열이 어떤 값을 담고있는지(petsOfYeonuk) 바로 이해할 수 있습니다. 문서는 명확히 어떤 정보를 나타내고 있는지 알 수 있어... 리팩토링refactoringrefactoring [React Performance Optimization] SwitchController 이번에는 스마트팜 원격 조종에 필요한 스위치를 최적화한 경험을 공유하려 합니다. 스위치의 작동은 아래와 같습니다. gif 만드는 프로그램이 제 사이트 인식을 잘 못하는 것 같습니다. 3번째 스위치가 on / off 되고 있는 것을 보여드리려 했습니다.. 여기서 중요한 점은 스위치를 작동시키면 아래의 gif와 같이 스위치 기록 컴포넌트가 업데이트되면서 기록을 보여줍니다. 테스트 과정은 위의 g... ReactrefactoringReact [Refactoring] # 컬렉션 캡슐화하기 앞서 레코드를 캡슐화하는 것은 가변 객체를 클래스로 변경하는 방법을 활용했다. 컬렉션에 대해서는 이미 클래스의 field에 컬렉션이 있는 상태에서 이를 캡슐화해야 한다. 컬렉션을 getter로 내보내면, 사실 객체의 참조값을 내보냈기 때문에 클라이언트에서는 클래스를 통하지 않아도 컬렉션을 마음대로 수정할 수가 있다. 여기서 캡슐화가 깨지게 된다. 컬렉션을 다루는 행위는 클래스를 통해서 동작해... refactoringrefactoring
리팩토링은 그만한 가치가 있었습니다. 리팩토링으로 다음 단계가 더 쉬워집니다. 이번 주 작업은 내 OpenSSG 코드를 리팩토링하는 것입니다. 관리하기 쉬운 방식으로 코드를 분해하고, 누구나 코드를 더 쉽게 이해할 수 있도록 더 나은 이름을 지정하고, 오류를 줄이고 단위 테스트에서 오류를 찾는 기능을 만드는 것의 아름다움을 보았습니다. 협동조합을 하다보니 리팩토링의 중요성을 더 실감하게 되었습니다. 기능을 구현하는 동안 코드를 ... javaopensourcerefactoringstaticsitegenerator Django 앱의 이름을 바꾸는 방법 처음에 에 대한 MVP(최소 실행 가능한 제품)를 만들었을 때 전체 Django 프로젝트가 우선순위에 관한 것이라고 생각했습니다. 몇 년 후 저는 Django 프로젝트가 SaaS(Software as a Service)에 관한 것이며 우선 순위 지정은 SaaS가 작동하는 데 필요한 모든 기능의 일부일 뿐이라는 것을 깨달았습니다. 깨끗하고 잘 정리된 코드를 갖도록 앱 이름을 바꿔야 했습니다. ... djangointermediateadvancedrefactoring Rector를 사용하여 PHP 7.4에서 8.1로 안전하게 업그레이드 현재 안정적인 마지막 PHP 버전은 8.1이며 이라는 도구를 사용하여 업그레이드할 예정입니다. Rector는 매우 편안한 방식으로 새로운 구문으로 넘어갈 수 있도록 도와줄 것입니다. composer.json에서 수동으로 버전을 변경하는 것과 함께 PHP 8.1을 사용하도록 환경도 변경했습니다. 더 깨끗한 방법이 있을 수 있으므로 이것에 대해 완전히 확신할 수는 없지만 작곡가가 모든 패키지를 ... refactoringlaravelrectorphp Extraindo Constantes de Números Mágicos Olá, esse é o meu primeiro post da série refatoração, no qual vou mostrar o que estou aprendendo com o curso Refactoring do O primeiro post vai ser sobre extrair constantes de números mágicos. 상상해보십시오 que você tem o segu... refactoringrubybraziliandevs RuboCop ToDo 수정 자동화 이 기사에서 을 소개하겠습니다. RuboCop에는 기존 범죄를 감지하고 .rubocop_todo.yml라는 파일을 자동으로 생성하는 기능이 있습니다. 이 파일은 할 일 목록 역할을 하므로 위반 사항을 점진적으로 수정할 수 있습니다. 이 메커니즘은 기존 프로젝트 중간에 새로운 Lint 도구를 도입하거나 기존 Lint 도구를 업그레이드하여 새로운 규칙을 도입할 때 매우 강력합니다. 풀 요청 생성... refactoringrubyrubocop Refactoring React: 경로 기능을 통한 페이지 경로 관리 React 웹 애플리케이션에서는 페이지 간에 리디렉션이 있는 것이 일반적입니다. 그리고 컨텍스트 외부의 다른 페이지를 가리키는 URL 경로를 빌드하는 React 구성 요소가 있는 것이 일반적입니다. 이 경우 OrderDescription 구성 요소는 제품 페이지에 대한 경로를 만들고 Link 에 값을 전달합니다. 여기서 문제는 OrderDescription가 ProductPage 구성 요소에... refactoringjavascriptreact 역 방법 리팩토링 다음은 Kent Beck의 을 읽으면서 오늘 배운 편리한 리팩토링 기술입니다. 하지만 먼저 문제가 무엇입니까? 때로는 다른 개체에서 다른 메서드를 호출하기 때문에 읽을 수 없는 메서드가 있습니다. 메서드는 이미 작고(그러나 읽을 수 없음) 한 가지 작업을 수행하기 때문에 메서드를 추출할 수 없습니다. 다음은 간단한 예입니다. 예가 복잡하지는 않지만 진행 상황과 누가 누구에게 전화하는지 이해하... rubyrefactoring 서비스를 사용하여 콜백을 피하는 방법. 종종 프로그래머는 콜백을 남용하여 결국 코드가 혼란스럽고 명확하지 않다는 것을 완전히 이해하지 못합니다. 콜백을 사용하지 않는 방법에는 여러 가지가 있습니다. 오늘은 서비스를 사용하여이를 수행하는 방법을 알려 드리겠습니다. 코드를 보자: 이 코드의 문제점은 무엇입니까? 우리는 명백하지 않은(마법적인) 행동을 취합니다. 매개변수의 일련 번호에 대한 데이터를 전달하지 않으며 이 값을 어디에도 명... callbackrefactoringrailsruby 리팩토링 #6: Rector를 사용하여 Laravel의 코드 품질 향상 에서 그들의 첫 번째 페이지 지침을 읽는 동안 나는 가능한 한 밤새 전체 프로젝트에 뛰어들어 리팩토링하기로 결정했습니다. 저는 PHP 7.4 환경에서 Laravel 8 프로젝트를 실행하고 있으며 간단한 코드 품질 개선을 처리하는 다음과 같은 간단한 구성으로 시작했습니다. 이것은 대부분이 오늘날까지 여전히 문자열 버전을 사용하기 때문에 오래된 Laravel 프로젝트에 환상적입니다. IDE가 U... laravelrefactoringphpwebdev 리팩토링 #8: 죽은 것은 절대 실행되지 않을 수 있습니다. 때때로 우리는 이 작은 세부 사항을 잊어버리고 도달할 수 없는 진술의 흔적을 남기고 그냥 넘어가는 경향이 있습니다. 다음은 죽은 코드 조각의 매우 노골적인 예입니다. 이라는 자동 도구가 있는데, 이 도구는 이와 같이 죽은 코드를 찾아서 제거하거나 그 존재를 알려주는 데 탁월합니다. IDE와 마찬가지로 주석 없이 필요한 자동 완성 기능을 얻을 수 있습니다. 이 중복 문서에 대해 마음에 들지 않... laravelrefactoringphpwebdev 사용을 중지하십시오 ||= 항상 오리 연산자||=는 initialize 메서드에서 인스턴스 변수를 초기화하는 대신 인스턴스 변수를 느리게 초기화하는 데 사용됩니다. 이것은 매우 간결하지만 다른 언어로 코딩한 후 처음 Ruby에 왔을 때 이상하다는 것을 알았습니다. 인스턴스 변수를 초기화하는 경우 초기화 프로그램을 사용하지 않는 이유는 무엇입니까? 지연 초기화 패턴은 필요하지 않을 수 있는 비용이 많이 드는 계산 실행을 피하... readabilityrefactoringruby 객체 간 기능 이동 좋은 소프트웨어의 핵심은 모듈성! 따라서 메서드가 자신이 속한 클래스보다 다른 클래스의 기능을 더 많이 이용할 때 메서드 이동 기법을 이용해서 의존성이 떨어지게 해야함 메서드가 제일 많이 사용하는 클래스에 비슷한 내용의 새 메서드를 작성하고 기존의 메서드는 대리 메서드로 전환하거나 삭제함 ✅ 리팩토링 전의 소스 Account클래스에는 계좌 유형마다 당좌대월 금액을 계산하는 기능이 있는데 나중... 세미나refactoringrefactoring 데이터 구성 setter, getter 메서드를 작성해서 두 메서드를 통해서만 필드에 접근하도록 하는 기법 하위클래스가 메서드에 해당 정보를 가져오는 방식을 재정의하거나 데이터 관리에서 유연함을 가짐 ✅ 리팩토링 전의 소스 ✅ 리팩토링 후 소스 📑 References... 세미나refactoringrefactoring 조건문 단순화 다른 사람의 코드를 보거나 내가 코드를 짜다보면 복잡한 내용이 조건문에 들어가는 경우가 있음 이 기법의 목적은 조건이 있는 함수를 추출하여 코드를 읽기 쉽게 만드는 것 ✅ 리팩토링 전의 소스 if문 안에 조건이 복잡해.... charge에 대입되는 값들도 너무 복잡해... ✅ 리팩토링 후 소스 조건들을 함수로 만들어서 대입함! 코드는 늘어났짐나 알아보기 편해짐 같은 결과를 내는 조건문이 연속... 세미나refactoringrefactoring [자바 코딩의 기술] 2. 코드 스타일, 자바 API 다듬기 speedPreset에 의해 targetSpeed가 결정되는데 이 때 개발자들은 선택할 수 있는 speedPreset의 옵션을 알 수 없음 + 컴파일러는 코드가 알지 못하는 수를 입력하지 못하도록 막을 수 없음 → 코드가 난해해짐과 동시에 오류 발생 확률이 올라감 1번의 코드에서 setPreset에는 모든 정수가 들어갈 수 있음 → 즉, 내부에서 처리할 수 있는 0, 1, 2 외에도 다양한 ... 자바 코딩의 기술독서refactoringJavaJava 리팩터링 9장 역할이 둘 이상인 변수가 있다면 쪼개야 한다. 변수를 선언한 곳과 값을 처음 대입하는 곳에서 변수 이름을 바꾼다. 이 변수에 두 번째로 값을 대입하는 곳 앞까지의 모든 참조(이 변수가 쓰인 곳)를 새로운 변수 이름으로 바꾼다 두 번째 대입 시 변수를 원래이름으로 다시 선언한다. 테스트 한다. 매 반복에서 변수를 새로운 이름으로 선언하고 다음 번 대입 때까지의 모든 참조를 새 변수명으로 바꾼다... refactoringrefactoring [자바 코딩의 기술] 1. 코드 정리 생기초 조건문을 쓸 때 부정표현 if(!isTrue()) 보다 if(isTrue()) 처럼 !가 들어가는 부정은 사용하지 않는 게 좋다 → 긍정의 표현은 부정의 표현보다 코드의 이해도를 높이는데 도움이 됨 조건문이 3개 이상 쓰일 경우 간소화를 하는 게 좋음 → 이 때 간소화 하는 조건문 덩어리들이 공통적으로 사용되는 부분이 있다면 메소드(함수)로 빼내는 게 좋음 x && y || z → (x &&... 자바 코딩의 기술독서refactoringJavaJava 떠먹여주는것이 아닌, 내가 찾아 떠먹고 싶게 만들어주는 코캠 고마워! 2주차의 마무리..! ft. typescript 너 내가 이해하고 말꺼야 (Code Camp FE 6기) 왜냐면 부족한 알고리즘 문제는 전날 예습하거나 복습을 미리 해가기도 하고, 아침엔 수업에 필요한 부분 보충하거나 예습이 더 필요한 날도 있기 때문에..! 오늘 내가 스스로 풀기 힘들었던 알고리즘 문제 sort() - 배열의 모든 원소를 적절한 위치에 정렬 후 해당 배열을 반환 join() - 배열의 모든 원소를 연결해 하나의 문자열을 반환하는 메서드 -2.이문제는 스스로 생각해내지도 못했고,... 구조분해할당codegeninstanceof ElementtypescriptPrettierearly exiteslinkdestructing assignmentrefactoringcodegeneratorPrettier Clean Architecture Part 3: Principles SRP 를 위반하는 이 클래스는 다음과 같이 서로 성격이 다른 method 를 가지게 된다. 여기서 문제는 만약 getWorkingHours 함수를 바꾸게 되면 서로 다른 actor (finance and HR team) 에게 영향을 준다는 것이다. 이러한 문제는 서로 다른 actor 가 의존하는 코드를 너무 가까이 배치했기 때문에 발생한다. 위 사례에서 finance, HR 각각의 개발자가... clean architecturerefactoringRobert.C.MartinRobert.C.Martin Refactoring 체크리스트 이러한 console.log가 최종 결과물에 남아있다면 가독성을 해칠 수 있습니다. 하지만 밑의 firstName과 lastName이라는 변수명을 보면 각각의 변수가 이름과 성을 나타내고있다는것을 바로 알 수 있습니다. good의 예시에서는 변수명을 보고 이 배열이 어떤 값을 담고있는지(petsOfYeonuk) 바로 이해할 수 있습니다. 문서는 명확히 어떤 정보를 나타내고 있는지 알 수 있어... 리팩토링refactoringrefactoring [React Performance Optimization] SwitchController 이번에는 스마트팜 원격 조종에 필요한 스위치를 최적화한 경험을 공유하려 합니다. 스위치의 작동은 아래와 같습니다. gif 만드는 프로그램이 제 사이트 인식을 잘 못하는 것 같습니다. 3번째 스위치가 on / off 되고 있는 것을 보여드리려 했습니다.. 여기서 중요한 점은 스위치를 작동시키면 아래의 gif와 같이 스위치 기록 컴포넌트가 업데이트되면서 기록을 보여줍니다. 테스트 과정은 위의 g... ReactrefactoringReact [Refactoring] # 컬렉션 캡슐화하기 앞서 레코드를 캡슐화하는 것은 가변 객체를 클래스로 변경하는 방법을 활용했다. 컬렉션에 대해서는 이미 클래스의 field에 컬렉션이 있는 상태에서 이를 캡슐화해야 한다. 컬렉션을 getter로 내보내면, 사실 객체의 참조값을 내보냈기 때문에 클라이언트에서는 클래스를 통하지 않아도 컬렉션을 마음대로 수정할 수가 있다. 여기서 캡슐화가 깨지게 된다. 컬렉션을 다루는 행위는 클래스를 통해서 동작해... refactoringrefactoring