Refactoring10 클린코더스 강의 내용 정리 #004 - Correct Comment ? (올바른 주석 작성 방법) 서론 보통 개발을 할 때 유지보수를 위해 주석을 달거나 또는 잊어먹지 않기 위해 적는 경우도 있다. 이번 챕터에서는 이러한 주석들이 올바르지 않게 사용하는 방법에 대해 지적하고, 올바른 사용 방법에 대해 강의한다. 이 강의를 듣고 필요한 부분을 정리한다. Coding Standards에 대해 조직이 일정 수준의 크기가 되면 관료적인 문서화를 요구한다. >> 필요하다. 대신, 결국엔 그 문서를 보기보단 소스 안에 해당 내용을 더 잘 녹일 수 있느냐가 중요하다. 코드내에서 명확하게 작성되어있지 않으면 헤매는 것은 문서가 되어있다해도 매 한가지다. (문서의 양은 광대하다.) Coding Standards가 코맨트 작성을 강요하게 된다면 예시에서의 Comment 작성 부분을 보면, 메서드의 이름과 중복적인 내용.. Refactoring/Clean Coding Skill 2022. 4. 11. 클린코더스 강의 내용 정리 #003 - Function Structure 서론 이번 글에서는 함수들의 구조에 대한 내용을 듣고 정리하려고 합니다. 한번 알아봅시다. Function Structure ? Arguments 문제1 - 인자가 많아지면 복잡도가 증가한다. 상황에 따라 다르겠지만 보통은 인자 3개를 최대로 보고 설계한다. 이를 해결할 수 있는 방법은 뭐가 있을까? 1. 좋은 이름을 갖는 Setter를 쓰자. 2. Java Bean Pattern을 사용한다. 3. Builder Pattern을 적용한다. 가장 추천하는 방법은 Builder Pattern을 사용하는 것이다. 아래의 예로 보자. Builder Pattern 예시 Builder Pattern 적용 전 Builder Pattern 적용 후 적용 후 JUnit 테스트 Builder Pattern을 적용 후 확실.. Refactoring/Clean Coding Skill 2022. 4. 8. 클린코더스 강의 내용 정리 #002 - Function 서론 이번 편에서는 제목에서 알 수 있듯 함수(Function)에 대해 강의들은 내용을 정리하려한다. "Function 의 개념과 역할을 알고 리팩토링 하자" 1. 함수는 한가지의 일만 해야한다. 2. 잘 지어진 서술적인 긴 이름을 갖는 함수들로 유지해야한다. 3. 더 작아질 수 없을 만큼 작아야 한다. 4. 큰 함수를 보면 클래스로 추출할 생각을 해야한다. 5. 클래스는 일련의 변수들에 동작하는 기능의 집합이다. 6. 메서드 추출 후 불필요한 괄호는 제거한다. > 괄호는 하나 이상의 책임을 갖는다는 증후를 표현한다. 위의 내용들을 조합하여 강의에서 리팩토링 하는 것을 볼 수 있는데, 정말 쪼갤 수 있을 때까지 쪼개는데 여기서 가장 중요 포인트는 쪼갤 때마다의 변수 및 메서드의 이름이다. 이름을 정말 한.. Refactoring/Clean Coding Skill 2022. 4. 5. 클린코더스 강의 내용 정리 #001 - OOP 서론 클린 코드에 요즘 부쩍 관심이 많다. 좋은 강의를 찾기 위해 이곳저곳 돌아다니다가 백명석님의 클린코더스 강의를 보게되었다. 이 강의는 필자가 짧게 훑어보고 여러 평들을 찾아본 결과 8년전에 업로드한 영상임에도 불구하고 여전히 현직 개발자들에게 좋은 영상을 제공해줄 것이라 생각이 들었다. 해당 강의는 따로 이동시간 (출 퇴근)에 시청할 예정이며 느낀점에 대해서만 간략히 정리해 보려 한다. 첫번째 강의는 OOP에 관련된 내용이다. "기계가 이해할 수 있는 코드는 어느 바보도 작성할 수 있다. 하지만 인간이 이해할 수 있는 코드는 잘 훈련된 SW 엔지니어만이 작성할 수 있다." 위의 말에 대해 격히 공감하는 바이다. 필자도 회사에서 레거시 코드들을 수정을 해야할 일이 생길 때면 정말 막막하다. 어디서부터.. Refactoring/Clean Coding Skill 2022. 4. 5. [Refactoring 기법 #05] 메서드 정리 - 알고리즘 전환 ※ 오늘의 명언 코드 수를 기준으로 프로그램의 진도를 측정하는 것은 비행기 제작 진도를 무게로 측정하는 것과 같다. - Bill Gates 서론 이번 글에서는 메서드 안에 있는 알고리즘을 전환하는 방법에 대해 기술해볼 것이다. 목적 알고리즘을 더 분명한 것으로 교체해야 할 땐 해당 메서드의 내용을 새 알고리즘으로 바꿔보자. 작성 소스 String foundPerson(String[] people) { for(int i=0; i Refactoring/Refactoring Skill 2022. 1. 16. [Refactoring 기법 #04] 메서드 정리 - 임시변수를 메서드 호출로 전환 ※ 오늘의 명언 만일 디버깅이 벌레를 잡는 과정이라면, 프로그래밍은 그걸 집어넣는 과정이다. - Edsger W. Dijkstra, 구조적 프로그래밍, 세마포어로 유명한 컴퓨터 과학자 서론 이번에 공부할 내용은 메서드 정리 파트에서 임시변수를 메서드 호출로 전환하는 방법에 대해 서술해 볼 것이다. 작성소스 double basePrice = _quantity * _itemPrice; if(basePrice > 1000) return basePrice * 0.95; else return basePrice * 0.98; 위의 소스에서 어떤 것을 리팩토링 할 수 있을까? 책에서 제안하는 내용은 이렇다. "수식의 결과를 저장하는 임시변수가 있을 땐 그 수식을 빼내어 메서드로 만든 후, 임시변수 참조 부분을 전부 .. Refactoring/Refactoring Skill 2022. 1. 11. [Refactoring 기법 #03] 메서드 정리 - 임시변수 내용 직접 삽입 ※ 오늘의 명언 훌륭한 코드는 훌륭한 문서보다 낫다. - Steve McConnell, 개발자 서론 이번에 공부할 내용은 메서드 정리 파트에서 임시변수 내용 직접 삽입이다. 바로 시작해보자. 작성소스 private bool compareSumValue() { int temp_val = Calculator.Sum(1,2); return (temp_val > 2) } 위의 소스에서 temp_val은 Sum()이라는 함수에서 나온 결과물을 담아놓는 임시 변수이다. 리팩토링 책에서는 이렇게 제안한다. "간단한 수식을 대입받는 임시변수로 인해 다른 리팩토링 기법 적용이 힘들 땐 그 임시변수를 참조하는 부분을 전부 수식으로 치환하자" 위의 내용을 참고하여 리팩토링을 진행해보자. 리펙토링 후 소스 private bo.. Refactoring/Refactoring Skill 2022. 1. 9. [Refactoring 기법 #02] 메서드 정리 - 메서드 내용 직접 삽입 ※ 오늘의 명언 항상 이런 생각으로 개발에 임하라.“내 소스를 유지보수하게 될 개발자는내가 어디 살고 있는지 알고 싶어하는 과격한 사이코패스일 것이다.” - Martin Golding 서론 우리는 보통 어떠한 기능을 갖고 있는 로직들을 함수로 만들어 사용한다. 과연 기능을 갖고 있다해서 모두 함수로 만들어 사용하는 것이 좋은 소스라고 볼 수 있을 것인가? 바로 이 질문에 대해 이번 글에서 다뤄볼려고 한다. 작성 소스 int val = ?; private int getValue() { return compareValueCheck() ? 2 : 1; } boolean compareValueCheck() { return val > 5; } 위의 소스를 보면 int형은 val가 멤버변수로 선언되어있는 상태이고 .. Refactoring/Refactoring Skill 2022. 1. 9. [Refactoring 기법 #01] 메서드 정리 - 메서드 추출 ※ 오늘의 명언 아무리 구조가 잘 되어 있더라도, 프로그래머가 나쁜 프로그램을 만드는 걸 막아주는 프로그래밍 언어는 없다. - Larry Flon, 구조적 프로그래밍에 대한 연구 저자 서론 이번 글에서 공부할 내용은 메서드 정리 파트에서 메소드 추출 부분의 내용을 정리할려고 한다. 해당 내용은 간단한 내용이니 부담없이 봐도 좋을 것 같다. 작성 소스 private string _blog = ""; private string _owner = ""; praivte void printBlogOwner() { //블로그 정보를 불러오는 함수 호출 inputVal(); //세부 정보 출력하기 System.out.println("blog" : + _blog); System.out.println("owner" : +.. Refactoring/Refactoring Skill 2022. 1. 4. [Refactoring] 리팩토링(Refactoring)이란? (리팩토링 효과 / 해야 하는 이유) ※ 오늘의 명언 올바로 작동하지 않는다고 걱정하지 마라. 모든 게 잘 되었다면, 내가 할 일이 없어진다. - Mosher’s Law of Software Engineering 서론 클린 코드가 필요한 개발자에게 필요한 기술은 리팩토링이다. 위의 이미지에 있는 교재로 스터디를 진행할 예정이며 지금처럼 여유있을 때마다 하나씩 정리할 예정이다. 개발에 대한 공부는 끝이없지만 이 리팩토링에 대한 개념을 정리하여 한줄을 적더라도 누구에게 보여줘도 이해하기 쉬운 소스를 짜보자. 우선 기술들을 익히기 앞서 리팩토링 기술들에 대해 리펙토링에 대해 먼저 알아보자 리팩토링이란? ( What is Refactoring ? ) 위키백과에서 정의 된 내용부터 알아보자. 리팩토링(Refactoring)이란 "'결과의 변경 없이 .. Refactoring/Refactoring Skill 2022. 1. 3. 이전 1 다음 💲 많이 본 글