묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨오브젝트 - 설계 원칙편
7-3 모듈의존성 역전에 대해
이걸 정말 실무에서 실현하시는지 궁금해요.이건 뭐랄까 정말 이론적인 얘기 같아요.이 예제가 아주 적절한데, 보통 저런 구조의 별도 모듈에 구현되는 하위수준의 기능은 라이브러리이거나 스탠드얼론 생태계를 갖는게 일반적이죠.이건 실무적으로 보면 잭슨이 우리회사 인터페이스에 따라서 만들어져야한다 라고 말하는 것에 가까운 느낌이랄까,저는 실무적에서 기능 모듈의 인터페이스가 도메인 모듈에 소속되게 만든 경험이 아예 없는 거 같아요. 소시적에 이론 따라 몇 번 해봤는데 완전 별로였거든요.
-
해결됨오브젝트 - 설계 원칙편
7-3 자막오타
-
해결됨오브젝트 - 기초편
(질문 글) Movie와 Customer의 위치
5-1. 객체 구현하기 (2:16)질문: reserve 함수 구현 시 Movie가 아래 처럼 전달될 수 도 있다고 생각했습니다.생각 1 (함수 인자로 Movie 전달):public Reservation reserve (Movie movie...) { ... }생각 2 (Movie Id를 전달 받고, 함수 내부에서 Movie 검색) 설계 관점에서 이러한 구현과 기존 구현은 어떻게 다르다고 이해할 수 있을까요?감사합니다.참조 (기존 구현된 코드): public class Screening { private Movie movie; public Reservation reserve (Customer customer, int audienceCount) { Money fee = movie.calculateFee(this).times(audienceCount); return new Reservation(customer, this, audienceCount, fee); } }
-
해결됨오브젝트 - 기초편
(오타 제보) 2-3 문서 내 문구 수정 제안
2-3. 데이터와 프로세스 통합하기 6페이지동영상 강의 1:25원문: Shift or Responsibility제안: Shift of Responsibility영상의 흐름과 내용에서 중요한 부분은 아니지만, 정말 훌륭한 강의 자료에 조금이나마 기여하고 싶은 마음에 제보 드립니다. 감사합니다.
-
해결됨오브젝트 - 설계 원칙편
6-2 명령이라도 성공여부는 어떻게 하는 게 좋을까요
자바 클래스 라이브러리들 조차도 대부분의 명령에 boolean을 반환하죠. 이게 고민인데 명령인 메소드는 반드시 void인가 하는 점입니다.
-
해결됨오브젝트 - 설계 원칙편
6-1 room을 노출한 것도 디미터 위반 아님?
player.currentRoom() 까지는 디미터 위반이 아니지만player.currentRoom().name()이나 description()은 디미터 위반인거 같아요.특히 그 다음 장표에서 player의 내부 생태계에 Room을 포함한 그림이 나오는데 Room의 변화가 Game의 수정을 유발하니까요.
-
해결됨오브젝트 - 설계 원칙편
6-1 11:25초에 슬라이드가 뭔가 돌아간듯
안그래도 영상이 뭔가 갑자기 슬라이드 몇장이 잘못넘어간 느낌으로 재생되다가 11:25초를 보면 코드가 다시 디미터 법칙 위반 상태로 왼쪽이 되돌려져있어요
-
해결됨오브젝트 - 설계 원칙편
5-4 명령객체를 enum으로 하지 않을 이유가..
오버엔지니어링인거 같은데 굳이 sealed에 record를 동원할 필요가 있는가 해서요.아 그냥 딴지거는 건 아니고 평소 개발자들에게서도 쓸데없는 클래스 구조물 생성을 너무 자주 보다 보니 ^^; 직렬화할 때도 어려워지고 그래서요.
-
해결됨오브젝트 - 설계 원칙편
4-2 머니클래스의 사용 질문
의문이 드는게 어디냐면 calc에서Money.won( (long) Math.ceil( money.doubleValue ))을 통해서 Money를 만들어내잖아요.일단 설명의 용이성을 위해 static won이나 메소드 doblueValue 생략하신건 문제 없습니다만..1. money.doubleValue는 환률과 무관한 컨텍스트로 토해지는 값인거 같은데2. 그 값을 바탕으로 won을 통한 Money를 만들어도 되는거냐싶은 생각이 너무 들어요 ^^;아예 값과 참조에 집중하려면 Money.value(long)같은걸로 했어야 하지 않았나 싶은...실제 이어지는 ceil의 메소드화에서는 아예 won의 도움없이 Money를 숫자기반으로 만들기도 했구요.
-
해결됨오브젝트 - 설계 원칙편
4-2강 음량 작음
왠지는 모르겠으나 4-2강만 음량이 다른 강의 대비 80%수준으로 낮아지는.. 죄송 별걸다..=.=
-
미해결멀티패러다임 프로그래밍 1편: 반복자 패턴 & LISP (with TypeScript, Clojure, Kotlin)
멀티패러다임 프로그래밍 책
유인동님! 안녕하세요!!책을 아직 구매하지 않았는데 책과 이 영상강의중 어떤 것이 더 심화된 내용일까요!?아니면 같은내용인데 영상으로 더 쉽게 접할 수 있게 만드신 강의인건지 궁금합니다!
-
해결됨오브젝트 - 설계 원칙편
3-2 roomAt추출 버그아닌가요
void반환인데 if안에 쓰이고 있는듯 해요.boolean isRoomExist(int x, int y){ return rooms[x + y * width] != null;}이렇게 되야할 거 같은데..
-
해결됨오브젝트 - 설계 원칙편
3-2 언제 추출을 멈출까
메서드가 한가지 이유로 변경될 때까지라는 기준이 모호하기도 하고 약간 실무상으로 반대하는 입장이기도 합니다.우선 한가지 이유라면 이미 run도 한가지 이유(실행하기 위해)welcome도 인사말하기 위해이기 때문에 매우 모호합니다. 반대로 showRoom조차도 일종의 템플릿 메소드 파트와 Room이 처리하는 부분으로 나뉜 것으로 되어있죠.그런 면에서 저는 실무에서 메소드 추출을 멈추는 실제적인 기준을 변화율로 두고 있어요. 그 동네가 한꺼번에 변하냐 아니냐로 보는 방식입니다.만약 welcome수준이 한꺼번에 팀장 회의에서 갈려나가는게 일반적이라면 거기서 멈추고 showRoom에서도 room자체의 설명을 보여주는 부분만 자주 바뀌면 다시 추출하는 방식인거 같아요.
-
해결됨오브젝트 - 설계 원칙편
3-2에서 start() 추출에 대해
지역변수를 필드변수로 승격하는 것에 대한 문제를 생각하게 됩니다.기존에는 running이 지역스코프라 확실하게 문제 범위를 play라고 안심할 수 있었던 것에 비해 필드로 옮겨지면서 왠지//이건 play()에서만 사용됨boolean running;이라고 해야 할 거 같은 느낌이네요.저는 이 경우 스코프 제한을 더 우선 시 하는 편입니다만 이는 이 메소드에서는 괜찮지만 동시성이나 여러가지를 고려하면 더욱 안좋은 습관이지 않냐라는 생각도 듭니다.
-
해결됨오브젝트 - 설계 원칙편
1-1에서 질문있어요.
1-1에서 미래를 예측할 수 없어 실제로 변경이 발생했을 때 적합한 설계로 개선한다고 했는데 이게 약간 도돌이표 느낌이에요.왜냐면 설계를 선택할 때 변경될 가정을 기반으로 한다고 했기 때문입니다.즉 1. 변경 방식에 따라 설계를 선택2. 변경이 발생하면 설계를 변경아니 이러면 변경에 대응하기 위한 설계가 아니라 변경 시 마다 설계를 바꾼다는 것인데애당초 설계를 왜 한 건가 싶은 생각이 맴도는 느낌이네요.저는 설계를 코드를 변화율에 따라 재배치한다고 생각했는데 변화가 일어날 때마다 설계를 변경할 거면 그건 그냥 설계가 아니라 변경에 따라 코드를 수정한 것 같은..
-
해결됨오브젝트 - 설계 원칙편
예제 코드 여는게 너무 불편해요
30개 정도 되는 repo를 하나하나 클론해서 여는게 진짜 너무 불편합니다.폴더 하나에 다 넣어 주시거나 브랜치로 나눠서 제공해주시면 안될까요?
-
미해결카카오 코테 6주 합격! 실전 파이썬 코딩테스트
입/출력으로 모듈화를 해서 문제를 풀어보려고 하는데 방향이 맞는지 궁금합니다.
# 단어 입력 / 목록 리스트 출력 # 목록 리스트 입력 / 중복 검사 리스트에 이미 있는 요소인지 확인 후 각 요소를 다른 문자가 나오기전까지 중복 검사 리스트에 저장 # 중복 검사 리스트가 온전히 만들어진걸 카운팅 +1 입력 / 카운팅 출력 import sys input = sys.stdin.readline t = int(input()) cnt = 0 words = [] for _ in range(t): words.append(input()) for word in words: used_li = [] cur_word = '' flag = 1 for c in word: if cur_word != c and c not in used_li: cur_word = c used_li.append(c) continue if cur_word == c: continue if cur_word != c and c in used_li: flag = 0 break if flag == 1: cnt += 1 print(cnt) 헤이밥 강의를 보고 평소 풀던 방법이 아닌 모듈화로 쪼개서 풀어보려 하는데 괜찮은지..그리고 조건문을 좀 복잡하게 달아서 푼 것같은데 방법론적으로 좋은 접근인지도 조언을 구하고 싶습니다.
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
사전문제말구 수업 강의하실때 사용하시는 자료는 배포안하시나요??
사전문제말구 수업 강의하실때 사용하시는 자료는 배포안하시나요??
-
해결됨오브젝트 - 기초편
설계방법론에 관한 질문드립니다.
안녕하세요, 먼저 좋은 강의 제공해주셔서 감사합니다.설계 방법에 대한 이론적인 내용 부분에서 좀 더 명확한 정리를 하고 싶어 고견을 얻고자 질문 드리게 되었습니다.책임 주도 설계와 GRASP 지침에 따른 설계를 차례로 보여주는 방식으로 설명을 해주셨는데요, 이때 도메인의 개념을 조금 다른 시각으로 보면 그게 도메인 주도 설계(DDD) 와 유사하지 않나 하는 생각이 들었습니다 (아키텍처 부분에서도 use case 와 같은 부분은 다비 비에이라의 헥사고널 아키텍처에서 사용하는 개념과 동일한 개념이 아닌가 생각했습니다)전체적인 객체 지향 설계 방식의 흐름을 설명해주시며 연관된 다른 설계 방식의 내용을 같이 의도하여 말씀해 주신 건지 아니면 그런 한 설계 방식들을 어떻게 정리하고 계신지 고견 주시면 감사하겠습니다.*추가적으로 CRC 를 작성하실때 편리하게 사용하시는 툴 혹은 방식이 있으시다면 공유해주시면 감사하겠습니다.
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
백준 12865문제 질문드립니다.
그리디 연습문제 및 목표 문제 중에 12865번 평범한 배낭 문제가 있던데 그리디로 풀 수가 있나요? 최적의 해가 전체 최적해를 보장하지 않는데.. dp로만 풀리는 문제가 아닌가 해서 질문드립니다.