Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kadai2 akuchii #28

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open

Kadai2 akuchii #28

wants to merge 5 commits into from

Conversation

hakuta
Copy link

@hakuta hakuta commented Nov 18, 2018

io.Readerとio.Writerについて調べてみよう

標準パッケージでどのように使われているか

os.File, os.Stdin, os.Stdout, bytes.buffersなどデータの読み書きを行う処理の部分に使われている

io.Readerとio.Writerがあることでどういう利点があるのか具体例を挙げて考えてみる

例えばデータを読み書きする処理があったときに、io.Reader, io.Writerがあることで使う側は内部実装を知らなくても使うことができる。
内部実装を知らずに使えるので、読み書き先をDBからjson, csvなどに切り替えたい時も容易に行うことができる。

1回目の宿題のテストを作ってみて下さい

  • テストのしやすさを考えてリファクタリングしてみる
    課題1でユーザ定義型を使ってなかったので、structやinterfaceを定義して書き換えてみました。
    非公開なフィールドにアクセスするためにexport_test.go内でgetterを用意しました。
  • テストのカバレッジを取ってみる
go test -coverprofile=profile ./converter
go tool cover -html=profile

カバレッジが可視化されることでどこがテストされてないかがわかって素晴らしかったです。どういうテストデータを用意すべきか考える助けにもなりました。

  • テーブル駆動テストを行う
  • テストヘルパーを作ってみる

return errors.New("empty arg is not allowed")
}

if _, err := os.Stat(srcDir); os.IsNotExist(err) {
Copy link

@knsh14 knsh14 Nov 18, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これだと画像ファイルは存在するけど読込できないパターン(例えば壊れてるとかパーミッションが無いとか)に対応できなさそう?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確認してみます!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

srcDirが権限のないパーミッションだとos.IsNotExist(err)がtrueにならず、srcDir以下に画像ファイルあってもfilepath.Walkで検出されませんでした...

指定されたsrcDirが読み込めない場合はerrorを出してあげたほうがよさそうですね。

@@ -0,0 +1,72 @@
package converter_test
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

このパッケージ名にした理由が気になります。

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://tech.mercari.com/entry/2018/08/08/080000
の記事を参考にして、converterではなくconverter_testにしました。
converterと別パッケージにすることでパッケージを使う人と同じ状況(exportされたものしかアクセスされない)でテストを書くことができるのが良い、という理解です。

見直してたらpackage名と変数名が被ってたので変数名変えましたa8e7884

@tenntenn tenntenn added the kadai2 課題2 label Nov 19, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kadai2 課題2
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants