월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결코딩으로 학습하는 리팩토링
홈 디렉토리 .github 파일 생성
소스 코드 영상 설명 중에서깃허브에서 토큰 만드는 부분 까지는 따라 헀는데홈 디렉토리에 .github 파일을 생성하는 부분에서 막혔습니다 혼자 해결해 보려고 열심히 찾아봤는데 방법을 못찾겠네요저는 윈도우 사용자 입니다.github 파일 만드는 방법을 알려주시면 감사하겠습니다
- 미해결코딩으로 학습하는 리팩토링
리팩토링 22. 여러 함수를 변환 함수로 묶기 강의 내용과 소스 코드가 다른 부분 문의
강의를 보는 중에 올려 주신 소스 코드에는 강의 내용과 다르게 ReadingClient, ReadingClientTest 코드가 없고 코드가 다른 부분이 많은데 의도적으로 변경하신 건지 누락된 건지 따로 설명이 없어서 문의드립니다.
- 미해결코딩으로 학습하는 리팩토링
필드를 감추는 것이 중요한 이유?
안녕하세요 강사님레코드 캡슐화 설명을 들으면서 궁금한 점이 생겨 질문 드립니다.강의에서, 퍼블릭 필드를 감추는 용도로 퍼블릭 메서드를 사용할 수 있는데, 그 이유로는 퍼블릭 필드(ex, String name) 와 퍼블릭 메서드(ex, String setLastName()) 의 이름이 완전히 동일하다는 보장이 없기 때문입니다.위 문장을, 퍼블릭 메서드는 퍼블릭 필드를 감추는 용도로 사용할 수 있다고 이해했습니다.궁금한 점은, 그렇다면 필드를 감추는 것이 중요한 이유는 클라이언트단에서 데이터 클래스의 필드에 무작위적인 접근을 방지하기 위함인가요? 무작위적인 필드의 접근은 데이터를 쉽게 수정할 수 있게 때문이라고 추측했습니다.감사합니다.
- 미해결코딩으로 학습하는 리팩토링
오타제보. CVS -> CSV
CSV: comma-separated values강의 유익하게 잘 듣고있습니다. 감사합니다.
- 미해결코딩으로 학습하는 리팩토링
객체의 필드 몇개만 전달할 경우, 통째로 넘기기 vs 여러개로 넘기기
class Member {String id;String name;String addr;int age;} 위와 같은 클래스가 있고, 그중 절반정도의 필드를 매개변수로 넘겨야 할 경우,아래 2가지중 하나를 선택하는 고민을 매번 하게 됩니다.1) void check(id, name); 으로 할것인가2) void check(Member member); 로 할것인가 클래스의 모든 필드를 참조한다면 , 당연히 객체를 통째로 넘기면 되나, 절반 정도만 사용한다면 고민이 됩니다. 범용적일 필요가 없는 메서드라고 하더라도, 불필요한 값들을 객체를 통째로 넘기므로, 이 객체필드중 어떤걸 사용하지? 하면서 '구현'을 찾아봐야 하는 단점이 있어 보입니다.사용하는것만 무조건 넘겨야 한다면, 매개변수 갯수가 늘어나거나, 전용 dto를 만들어야 하니 불편하고,통째로 넘기는걸 반복하다 보면 의미없는 필드가 더 많은 객체를 매개변수로 넘기는 것과 다름없는 문제가 있어보입니다.절충점을 어떻게 찾아야 할까요?
- 미해결코딩으로 학습하는 리팩토링
[오탈자제보] 아주 작은 오타
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 리팩토링 자료 5페이지에 Mysterious 인데 Mysterius라고 아주 사소한 오타 제보합니다. 고생하십시오.
- 미해결코딩으로 학습하는 리팩토링
basePrice
안녕하세요 5분 30초 정도에private double discountedPrice메소드를 만들 때 basePrice도 메서드의 지역변수로 같이 만들면 매개변수를 한 개 더 줄일 수 있을 것 같은데 basePrice는 public double finalPrice()메서드에 냅두신 이유를 알 수 있을까요?
- 미해결코딩으로 학습하는 리팩토링
4:04 단축키 궁금합니다.
안녕하세요. 단축키가 어떻게되죠?(작성했던 코드 돌리기)
- 미해결코딩으로 학습하는 리팩토링
rename 메뉴에 대한 사소한 질문
rename 메뉴를 한번 띄우고esc 하고다시 rename 메뉴 띄우면서로 다른 창이 나타납니다... 기능적으로 다르게 사용할 수 있는 것인지 제 설정의 문제인지 궁금합니다.
- 미해결코딩으로 학습하는 리팩토링
테스트 코드 예제
안녕하세요 기선님 좋은 강의 만들어주셔서 감사합니다 ㅎㅎ 리팩토링 22, 23에는 테스트 코드 예제가 없는 것 같아 글 남깁니다~
- 미해결코딩으로 학습하는 리팩토링
Exception 부분
if (discountRate == null || dicountRate < 0) { // throw Exception 코드 } 으로해야 같은 의미가 아닌지 질문드립니다!
- 해결됨코딩으로 학습하는 리팩토링
리팩토링 강의 [ 일부 소스 파일 누락 ]
안녕하세요 백기선님! 강의 정말 잘 듣고 있습니다 ( 리팩토링, 패턴, 자바, 스프링 등등!! ) 지금 리팩토링 강의를 보고 있던 중, Combine Fucntion into Transform 목차 부분에서 제공 해주시는 소스와 강의에서 다루는 파일이 일치 하지 않아서 글 남겨드려요! ( ReadingClient & ReadingClientTest 파일 ) 강의를 보고 해당 파일을 만드는것은 어렵진 않지만 보완이 되면 좋을 것 같습니다! 질 좋은 강의를 만들어 주셔서 항상 감사하는 마음으로 듣고 있습니다. 감사합니다!
- 미해결코딩으로 학습하는 리팩토링
stream으로 변경 시 성능 문제
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 기선님. 리팩토링 이전 코드인 `for문`을 사용한 코드는 반복문이 한번으로 보여지는데 리팩토링 이후 코드는 `filter`, `map`, `filter`, `collect` 네번의 반복문이 도는 것일까요?
- 미해결코딩으로 학습하는 리팩토링
로컬 변수에 final
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 기선님! 변수가 '스코프 내에서 변하지 않는 값'이라면 대부분 final을 붙여주시는 편인가요? 로컬 변수로 final을 써본적이 없었던 것 같은데, 좋은 방법인 것 같아서 '스코프 내에서 변하지 않는 값'에는 다 붙여볼까하는데 베스트프랙티스가 궁금합니다!
- 미해결코딩으로 학습하는 리팩토링
Area 밑줄 나온부분
double area 라고 로컬변수 선언 안되어서 밑줄 나온거에여 저렇게 하면 필드변수에 바로 값입력해서 하단에 대입이 의미 없는거죠
- 미해결코딩으로 학습하는 리팩토링
클래스의 상속 vs 네임스페이스 vs nested 클래스
현재 Unity 프로젝트 진행 중입니다. Model-View-(Reactive)Presenter로 UI를 구현했습니다. 그랬더니 클래스가 다음과 같이 작성되더군요. ContentsPresenter : 버튼만 있는 화면 ContentsPresenter_WithDesc : 버튼과 설명이 있는 화면 ContentsPresenter_RoomList : 방목록 화면 ContentModel : 버튼 정보 데이터 ContentModel_Room : 버튼과 방 정보 데이터 ContentView : UI 요소(정사각형 버튼 컴포넌트 ) ContentView_Room : UI 요소(직사각형 버튼 컴포넌트) 디렉토리 상에서 봤을 때 Content라는 어휘만 유독 눈에 띄는게 거슬리고 언더바를 지우고 싶었습니다. 그래서 어떻게 바꿀지 3가지 방법을 고민해봤습니다. 1. 네임스페이스 사용 namespace ContentPresenter { public class Button {} public class ButtonWithDesc {} public class RoomList {} } namespace ContentView { public class Button {} public class ButtonForRoom {} } namespace ContentModel { public class Button {} public class Room {} } 2. 상속 사용 public class Button : ContentsPresenter {} public class ButtonWithDesc : ContentsPresenter {} public class RoomList : ContentsPresenter {} public class Button : ContentView {} public class ButtonForRoom : ContentView {} public class Button : ContentModel {} public class Room : ContentModel {} 3. nested 클래스 사용 public class ContentPresenter { public class Button {} public class ButtonWithDesc {} public class RoomList {} } public class ContentView { public class Button {} public class ButtonForRoom {} } public class ContentModel { public class Button {} public class Room {} } 작성해보고 나니 ContentPresenter의 클래스 이름이 모호하네요. 그런데 'Button만 표시하는 화면'임을 명시하는 직관적인 표현이 떠오르질 않네요... 어떤 이름이 좋을까요... ㅠ 아무튼 3가지 방법을 생각해 봤는데요. 1. 네임스페이스 사용 - 장점: 아무 비용 없이 클래스들을 묶을 수 있다. -단점: 클래스명(Button)이 다른 네임스페이스의 클래스명(Button)과 동일해서 디렉토리 또는 코드 상에서 구분이 힘들다. 2. 상속 사용. -장점: 클래스를 공통속성과 메소드들을 함께 묶을 수 있다. -단점: 공통 속성과 메소드들이 없어서 오버엔지니어링이 될 수 있다. 네임스페이스와 마찬가지로 디렉토리 또는 코드 상에서 구분이 힘들다. 3. nested 클래스 사용 -장점: 3개의 클래스 파일로 간추릴 수 있다. 코드 상에서 소속 클래스를 명시하기 때문에 구분이 가능하다. -단점: 파일이 점점 커진다. 이 3가지 방법 중에 어떤게 가장 나을지, 그리고 이 3가지 방법보다 더 나은 방법이 무엇일지 여쭤봐도 될까요? 좋은 강의 감사합니다 !
- 미해결코딩으로 학습하는 리팩토링
이런 경우도 따로 함수로 빼는게 좋을지 궁금합니다.
안녕하세요. 강의 잘 보고 있는 개발자입니다. 이번에 웹사이트 유지보수하는 중 인데 문득 이 강의를 보다가 비슷한 경우가 발생해서 이러한 경우는 어떻게 하는게 좋을지 궁금해져서 글올립니다. 현재 웹사이트에서 '스타일 적용'이라는 버튼이 있는데 이걸 누르면 A 스타일이 적용되고 안 누르거나 해제버튼을 클릭 한 경우는 B스타일을 적용하는 상황을 고려하고 있습니다. 이러한 스타일 적용에 관련된 로직이 많아서 상태를 두는 변수 하나를 사용해서 다음과 같이 사용하고 있는데 여기 있는 내용 처럼 하나의 함수로 빼는게 좋을지, 아니면 다른 방법을 고려할 수 있는지 궁금합니다. 일단 제가 현재 사용했던 방법은 수도코드로 간단하게 쓰면 다음과 같습니다. function getStyleByCurrentState(currentState) { if (currentState === "change") { return A style 객체 } else { return B style 객체 } } 적용 버튼에 clickApply() 가 연결 function clickApply() { return getStyleByCurrentState("change");} 해제 버튼에 clickRelease()가 연결 function clickRelease { return getStyleByCurrentState(); } 일단 추후에 state가 1개정도 더 추가 될 수 있는 상황이고 getStyleByCurrentState는 꽤 많은곳에서 호출하고 있는 상황입니다.
- 미해결코딩으로 학습하는 리팩토링
질문입니다
안녕하세요 선생님 강의 너무 흥미롭게 잘 보고 있습니다. 바로 본론으로 넘어 가겠습니다!. 메서드에 보내는 매개변수를 줄이는 방법을 설명하고 계시는데 2분 49초에 나오는 메서드는 homework라는 participant의 필드중 '하나'를 사용하는데 굳이 객체를 통째로 넘겨줘야하는 생각이 드는것 같습니다.이 부분에대한 선생님의 생각은 어떠신지 궁금합니다.
- 미해결코딩으로 학습하는 리팩토링
파라미터와 이들을 가진 클래스
안녕하세요 기선님! 강의 항상 잘 듣고 있습니다. 오늘 궁금한 점은 파라미터 수를 줄이기 위해 해당 파라미터를 갖고 있는 다른 클래스를 의존해도 되는가 입니다 제가 작성한 코드 중 A 메소드에서 여러개의 파라미터를 받는데, 그 파라미터들이 한 엔티티 클래스의 필드들입니다. 그리고 이 A 메소드에서 사용되는 파라미터들이 또 다른 메소드들에서도 공통적으로 사용되고 있는 상황입니다. 그래서 저는 이 공통적으로 사용되는 파라미터를 가진 DTO 클래스를 만든 후 이 클래스에 해당 엔티티를 받는 팩토리 메소드를 만들어서 A를 비롯한 여러 메소드의 파라미터를 DTO 하나로 줄이는 리팩토링을 진행했습니다. 하지만 해당 엔티티 클래스는 필드가 10개가 넘고, 고작 이 엔티티의 필드 몇개를 사용하기 위해 의존하는 것은 다소 무거운 게 아닌가라는 고민이 생기는데, 기선님의 시각은 어떠한지 궁금합니다!
- 미해결코딩으로 학습하는 리팩토링
해당 강의를 실행시 아래와 같은 에러가 발생합니다..!
Exception in thread "main" java.io.IOException: Failed to resolve credentials from ~/.github or the environment. at org.kohsuke.github.GitHubBuilder.fromCredentials(GitHubBuilder.java:76) at org.kohsuke.github.GitHub.connect(GitHub.java:137) at me.whiteship.refactoring._01_smell_mysterious_name._01_before.StudyDashboard.main(StudyDashboard.java:36) Caused by: java.io.FileNotFoundException: C:\Users\ksw\.github (지정된 파일을 찾을 수 없습니다) at java.base/java.io.FileInputStream.open0(Native Method) at java.base/java.io.FileInputStream.open(FileInputStream.java:211) at java.base/java.io.FileInputStream.<init>(FileInputStream.java:153) at java.base/java.io.FileInputStream.<init>(FileInputStream.java:108) at org.kohsuke.github.GitHubBuilder.fromPropertyFile(GitHubBuilder.java:200) at org.kohsuke.github.GitHubBuilder.fromPropertyFile(GitHubBuilder.java:184) at org.kohsuke.github.GitHubBuilder.fromCredentials(GitHubBuilder.java:68) ... 2 more 깃헙 관련 문제인거 같은데.. 어떻게 해결해야할까요??