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-en-ken #22

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

kadai2-en-ken #22

wants to merge 32 commits into from

Conversation

en-ken
Copy link

@en-ken en-ken commented Jul 31, 2019

課題2

気になったところ・感想

  • カバレッジもうちょいほしかったですが、時間切れでした。
    • 異常系のテストもう少し書きたかった。
  • goのinterfaceは実装側に明確なimplementsの記述がないが、意図せず同じI/Fをとってしまったりしないのでしょうか。
    • それで問題が発生したりしない?

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

  • 標準パッケージでどのように使われているか
  • io.Readerとio.Writerがあることでどういう利点があるのか具体例を挙げて考えてみる

標準パッケージで使われているところ

  • 基本的にI/Oが存在するところのI/Fには存在する。
    • stdin, stdout, stderr (os.Stdin, Stdout, Stderr)
    • ファイル(os.File)
    • メモリ(bytes.Buffer)
    • TCP,UDP (net)
    • POSTのbody (net.http)
  • bufioではラップしてより使いやすくしている。

利点

  • 理論的にはio.Reader/WriterのI/Fを実装しているどんなシステムにでも着替えられる。
    • 入力出力を抽象化できるので、呼び出し側は極論I/Oのシステムが何か意識しなくて良い。
    • 呼び出し側の実装が外界に依存しない。
    • DIPやりやすい。
    • 粗結合。移植観点からも有利。

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

  • テストのしやすさを考えてリファクタリングしてみる
  • テストのカバレッジを取ってみる
  • テーブル駆動テストを行う
  • [?] テストヘルパーを作ってみる

使い方

kadai2 -in [INPUT_EXT] -out [OUTPUT_EXT] SRC_DIR DST_DIR

#Usage of kadai2:
#  -in string
#        input extension (jpg/png) (default "jpg")
#  -out string
#        output extension (jpg/png) (default "png")

カバレッジ結果

> ./cov.sh
ok      github.com/gopherdojo/dojo6/kadai2/en-ken/cli   0.001s  coverage: 74.1% of statements
ok      github.com/gopherdojo/dojo6/kadai2/en-ken/imgcnv        0.071s  coverage: 85.0% of statements
ok      github.com/gopherdojo/dojo6/kadai2/en-ken/kadai2        1.150s  coverage: 0.0% of statements

kadai1からの変更点

  • mainをkadai2のディレクトリに変更
  • 冗長だった構造体のI/Fから関数のI/Fに変更
    • 関数のI/Fよき
  • コマンド引数をシンプルに変更
  • 独自モックを実装
  • 独自実装していたファイル取得の再起処理をfilepath.Walkに変更

@en-ken en-ken added the kadai2 label Jul 31, 2019
@en-ken en-ken requested a review from tenntenn July 31, 2019 09:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant