Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
課題2
io.Readerとio.Writer
io.Readerとio.Writerについて調べてみよう
解答
標準パッケージでどのように使われているか
io.Readerとio.Writerがあることでどういう利点があるのか具体例を挙げて考えてみる
IOが統一されているため、標準入出力、ファイル、ネットワーク通信どのような場合でも、入出力処理をする側、それを使う側がお互いの処理内容を知らなくてすみ、付け替えも可能。
例えばファイルを読み込んで処理Aをするアプリがあり、今回新しくHTTPレスポンスからA処理をする機能を追加したい場合、io.Readerを返すHTTPレスポンス読込処理を用意すれば、処理A自体を変更する必要はない。また処理Aのテストは出力を意識する必要もない。
テストを書いてみよう
1回目の課題のテストを作ってみて下さい
対応
テストのしやすさを考えてリファクタリングしてみる
io.Readerとio.Writer
の課題を通して(c *Converter) Execute(in io.Reader, out io.Writer)
を作成した。テストのカバレッジを取ってみる
テーブル駆動テストを行う
map[string]struct
で作ってみた。テストヘルパーを作ってみる
checkAndDeleteFile
を作成わからなかったこと、むずかしかったこと