이전

리뷰 (8)

한줄평
평점 분포
  • 리뷰 총점10 38%
  • 리뷰 총점8 12%
  • 리뷰 총점6 25%
  • 리뷰 총점4 0%
  • 리뷰 총점2 25%
연령대별 평균 점수
  • 10대 0.0
  • 20대 0.0
  • 30대 7.0
  • 40대 5.0
  • 50대 0.0

포토/동영상 (1)

리뷰 총점 종이책 구매
이렇게 성의 없는 책은 처음이다
"이렇게 성의 없는 책은 처음이다" 내용보기
개발 서적을 보면서 번역이 이상하고 내용이 난해한 책들도 많다.그래도 이해하기 쉽게 책을 쓰는 것은 어려운 일이라는걸 알기에 책을 보며 화나지 않았다.그런데 이 책을 보며!! 처음으로 화가 났다.저자가 설명이 힘들고 표현이 부족해서가 아니라 그냥 책 자체를 쓰지 않았다.코틀린 설명을 60페이지 정도로 끝내고 나머지는 소스코드를 붙여 책의 분량을 채워 넣었다.나는 저자가 책
"이렇게 성의 없는 책은 처음이다" 내용보기

개발 서적을 보면서 번역이 이상하고 내용이 난해한 책들도 많다.

그래도 이해하기 쉽게 책을 쓰는 것은 어려운 일이라는걸 알기에 책을 보며 화나지 않았다.


그런데 이 책을 보며!! 처음으로 화가 났다.

저자가 설명이 힘들고 표현이 부족해서가 아니라 그냥 책 자체를 쓰지 않았다.


코틀린 설명을 60페이지 정도로 끝내고 나머지는 소스코드를 붙여 책의 분량을 채워 넣었다.

나는 저자가 책을 쓰는 성의와 자질이 의심스럽다

어찌 이럴 수 있단 말인가? 이런 식이면 누구나 책을 쓰겠다.

댓글 같은걸 달아본적이 없는데 책보다가 너무 화가나서 컴퓨터 켜고 댓글을 쓴다.

많은 기대를 하고 산 책은 아니지만 너무나도 실망스럽다. 

"코틀린 이것만 보면 돼" 도대체 뭘 보란 말인가?

차라리 github를 가서 소스코드를 보겠다.

돈이 아까운 책이다. 


c*******a 2020.03.11. 신고 공감 0 댓글 0
리뷰 총점 종이책 구매
코틀린 이거만 보면 돼
"코틀린 이거만 보면 돼" 내용보기
이 책의 목차는 괜찮은 편인 듯 하다. 목차만 보고 인터넷으로 책을 구매했다.근데, 이 책은... 서점가서 내용을 미리보고 살지 말지 고민하길 바란다.책의 하이라이트는 4장 안드로이드 워밍업이다.91페이지부터 153페이지까지... 책 내용은 아래와 같은 코드들이 엄청나게 중복되어 있다.아래와 같은 의미없는 파일의 내용이 수 차례(5회) 중복되어 있다.<?xml version="1.0" encoding
"코틀린 이거만 보면 돼" 내용보기

이 책의 목차는 괜찮은 편인 듯 하다. 목차만 보고 인터넷으로 책을 구매했다.

근데, 이 책은... 서점가서 내용을 미리보고 살지 말지 고민하길 바란다.


책의 하이라이트는 4장 안드로이드 워밍업이다.

91페이지부터 153페이지까지... 

책 내용은 아래와 같은 코드들이 엄청나게 중복되어 있다.


아래와 같은 의미없는 파일의 내용이 수 차례(5회) 중복되어 있다.

<?xml version="1.0" encoding="utf-8"?>
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"

FrameLayout
android:layout_width="1dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:background="@color/colorPrimaryDark"/>

Spinner
android:id="@+id/first_number1"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:background="@android:color/transparent"
android:entries="@array/number"/>

FrameLayout
android:layout_width="1dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:background="@color/colorPrimaryDark"/>

Spinner
android:id="@+id/first_number2"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:background="@android:color/transparent"
android:entries="@array/number"/>

FrameLayout
android:layout_width="1dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:background="@color/colorPrimaryDark"/>

Spinner
android:id="@+id/first_number3"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:background="@android:color/transparent"
android:entries="@array/number"/>

FrameLayout
android:layout_width="1dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:background="@color/colorPrimaryDark"/>

Spinner
android:id="@+id/first_number4"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:background="@android:color/transparent"
android:entries="@array/number"/>

FrameLayout
android:layout_width="1dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:background="@color/colorPrimaryDark"/>

Spinner
android:id="@+id/first_number5"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:background="@android:color/transparent"
android:entries="@array/number"/>

FrameLayout
android:layout_width="1dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:background="@color/colorPrimaryDark"/>

Spinner
android:id="@+id/first_number6"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:background="@android:color/transparent"
android:entries="@array/number"/>

FrameLayout
android:layout_width="1dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:background="@color/colorPrimaryDark"/>


</LinearLayout


MainActivity 쪽도 엄청나다. 


private TextView mWinInfo;
private TextView mResultInfo;
private Spinner mFirstGameNumber1;
private Spinner mFirstGameNumber2;
private Spinner mFirstGameNumber3;
private Spinner mFirstGameNumber4;
private Spinner mFirstGameNumber5;
private Spinner mFirstGameNumber6;

private Spinner mSecondGameNumber1;
private Spinner mSecondGameNumber2;
private Spinner mSecondGameNumber3;
private Spinner mSecondGameNumber4;
private Spinner mSecondGameNumber5;
private Spinner mSecondGameNumber6;

private Spinner mThirdGameNumber1;
private Spinner mThirdGameNumber2;
private Spinner mThirdGameNumber3;
private Spinner mThirdGameNumber4;
private Spinner mThirdGameNumber5;
private Spinner mThirdGameNumber6;

private Spinner mFourthGameNumber1;
private Spinner mFourthGameNumber2;
private Spinner mFourthGameNumber3;
private Spinner mFourthGameNumber4;
private Spinner mFourthGameNumber5;
private Spinner mFourthGameNumber6;

private Spinner mFifthGameNumber1;
private Spinner mFifthGameNumber2;
private Spinner mFifthGameNumber3;
private Spinner mFifthGameNumber4;
private Spinner mFifthGameNumber5;
private Spinner mFifthGameNumber6;

private Button mResetButton;
private Button mResultButton;
private Button mFirstRandomButton;
private Button mSecondRandomButton;
private Button mThirdRandomButton;
private Button mFourthRandomButton;
private Button mFifthRandomButton;




private void setLayout() {
mWinInfo = findViewById(R.id.win_text);
mResultInfo = findViewById(R.id.result_text);

mFirstGameNumber1 = findViewById(R.id.first_number1);
mFirstGameNumber2 = findViewById(R.id.first_number2);
mFirstGameNumber3 = findViewById(R.id.first_number3);
mFirstGameNumber4 = findViewById(R.id.first_number4);
mFirstGameNumber5 = findViewById(R.id.first_number5);
mFirstGameNumber6 = findViewById(R.id.first_number6);

mSecondGameNumber1 = findViewById(R.id.second_number1);
mSecondGameNumber2 = findViewById(R.id.second_number2);
mSecondGameNumber3 = findViewById(R.id.second_number3);
mSecondGameNumber4 = findViewById(R.id.second_number4);
mSecondGameNumber5 = findViewById(R.id.second_number5);
mSecondGameNumber6 = findViewById(R.id.second_number6);

mThirdGameNumber1 = findViewById(R.id.third_number1);
mThirdGameNumber2 = findViewById(R.id.third_number2);
mThirdGameNumber3 = findViewById(R.id.third_number3);
mThirdGameNumber4 = findViewById(R.id.third_number4);
mThirdGameNumber5 = findViewById(R.id.third_number5);
mThirdGameNumber6 = findViewById(R.id.third_number6);

mFourthGameNumber1 = findViewById(R.id.fourth_number1);
mFourthGameNumber2 = findViewById(R.id.fourth_number2);
mFourthGameNumber3 = findViewById(R.id.fourth_number3);
mFourthGameNumber4 = findViewById(R.id.fourth_number4);
mFourthGameNumber5 = findViewById(R.id.fourth_number5);
mFourthGameNumber6 = findViewById(R.id.fourth_number6);

mFifthGameNumber1 = findViewById(R.id.fifth_number1);
mFifthGameNumber2 = findViewById(R.id.fifth_number2);
mFifthGameNumber3 = findViewById(R.id.fifth_number3);
mFifthGameNumber4 = findViewById(R.id.fifth_number4);
mFifthGameNumber5 = findViewById(R.id.fifth_number5);
mFifthGameNumber6 = findViewById(R.id.fifth_number6);

mResetButton = findViewById(R.id.reset_button);
mResultButton = findViewById(R.id.result_button);
mFirstRandomButton = findViewById(R.id.first_random);
mSecondRandomButton = findViewById(R.id.second_random);
mThirdRandomButton = findViewById(R.id.third_random);
mFourthRandomButton = findViewById(R.id.fourth_random);
mFifthRandomButton = findViewById(R.id.fifth_random);

}

private void setListener() {
mFirstGameNumber1.setOnItemSelectedListener(mItemSelectedListener);
mFirstGameNumber2.setOnItemSelectedListener(mItemSelectedListener);
mFirstGameNumber3.setOnItemSelectedListener(mItemSelectedListener);
mFirstGameNumber4.setOnItemSelectedListener(mItemSelectedListener);
mFirstGameNumber5.setOnItemSelectedListener(mItemSelectedListener);
mFirstGameNumber6.setOnItemSelectedListener(mItemSelectedListener);

mSecondGameNumber1.setOnItemSelectedListener(mItemSelectedListener);
mSecondGameNumber2.setOnItemSelectedListener(mItemSelectedListener);
mSecondGameNumber3.setOnItemSelectedListener(mItemSelectedListener);
mSecondGameNumber4.setOnItemSelectedListener(mItemSelectedListener);
mSecondGameNumber5.setOnItemSelectedListener(mItemSelectedListener);
mSecondGameNumber6.setOnItemSelectedListener(mItemSelectedListener);

mThirdGameNumber1.setOnItemSelectedListener(mItemSelectedListener);
mThirdGameNumber2.setOnItemSelectedListener(mItemSelectedListener);
mThirdGameNumber3.setOnItemSelectedListener(mItemSelectedListener);
mThirdGameNumber4.setOnItemSelectedListener(mItemSelectedListener);
mThirdGameNumber5.setOnItemSelectedListener(mItemSelectedListener);
mThirdGameNumber6.setOnItemSelectedListener(mItemSelectedListener);

mFourthGameNumber1.setOnItemSelectedListener(mItemSelectedListener);
mFourthGameNumber2.setOnItemSelectedListener(mItemSelectedListener);
mFourthGameNumber3.setOnItemSelectedListener(mItemSelectedListener);
mFourthGameNumber4.setOnItemSelectedListener(mItemSelectedListener);
mFourthGameNumber5.setOnItemSelectedListener(mItemSelectedListener);
mFourthGameNumber6.setOnItemSelectedListener(mItemSelectedListener);

mFifthGameNumber1.setOnItemSelectedListener(mItemSelectedListener);
mFifthGameNumber2.setOnItemSelectedListener(mItemSelectedListener);
mFifthGameNumber3.setOnItemSelectedListener(mItemSelectedListener);
mFifthGameNumber4.setOnItemSelectedListener(mItemSelectedListener);
mFifthGameNumber5.setOnItemSelectedListener(mItemSelectedListener);
mFifthGameNumber6.setOnItemSelectedListener(mItemSelectedListener);
}


너무 심했다..

워밍업이니 예제로 이런걸 해볼 수는 있다고 생각은 한다.

하지만 별 의미도 없는 코드를 5번이나 중복해서 페이지 분량만 늘린건 충격적이었다.


이 책을 구매하고자 하는 사람들은 도서관이나 서점에서 직접 책을

훑어보고 구매하길 바란다.

p******a 2019.04.15. 신고 공감 0 댓글 1