Conversation
kadai1/args/args.go
Outdated
| @@ -0,0 +1,18 @@ | |||
| package args | |||
There was a problem hiding this comment.
ここは特に主要なロジックがあるわけではないので、別パッケージに分けずにmainパッケージに含めて良さそうです。
kadai1/convert/convert.go
Outdated
| if err != nil { | ||
| return err | ||
| } | ||
| slice := strings.Split(path, ".") |
There was a problem hiding this comment.
拡張子を取るにはfilepath.Extというライブラリ及び関数があるのでそれを使った方が良さそうです。なお、このやり方だと.があるディレクトリ名と拡張子のないファイル名が組み合わさった時に誤動作するので好ましくないです。
https://play.golang.org/p/Jn50hY_Mt9B
|
|
||
| func GetSelectedExtensionPath(fileType string, directory string) [][]string { | ||
| var retval [][]string | ||
| err := filepath.Walk(directory, func(path string, info os.FileInfo, err error) error { |
There was a problem hiding this comment.
パスはディレクトリも含んでいるため、ディレクトリではないかのチェックが必要です。
例えばxxx.jpgという名前のディレクトリがあると誤動作します。
kadai1/convert/convert.go
Outdated
| return nil | ||
| }) | ||
| if err != nil { | ||
| log.Fatal(err) |
There was a problem hiding this comment.
エラーはここで処理せずにmain関数にreturnしてmain関数で処理をした方が良く、そうするのがGoでは一般的です。理由としては呼び出し元でエラーをどう処理するかを委ねられること、エラーが発生しうる関数であることを明示できることなどがあります。具体的にはこのライブラリをcli以外で扱うことになったらここでlog.Fatalで落とすのが望ましくありません。
kadai1/convert/convert.go
Outdated
| "strings" | ||
| ) | ||
|
|
||
| func GetSelectedExtensionPath(fileType string, directory string) [][]string { |
There was a problem hiding this comment.
パスを返す関数なので[]stringで返した方が良さそうです。pathのみをappendしてその後の処理はパスを利用する関数で処理するのが良いかと思います。
kadai1/convert/convert.go
Outdated
| } | ||
| defer fso.Close() | ||
|
|
||
| switch { |
There was a problem hiding this comment.
以下のようにするのがシンプルかと思います。なお、元々の書き方だとtoと実際のエンコードの関数が逆になっているように思います。
switch to {
case "jpg","jpeg":
jpeg.Encode(fso, img, nil)
case "png":
png.Encode(fso, img)
default:
//エラー処理
}
kadai1/convert/convert.go
Outdated
|
|
||
| switch { | ||
| case (from == "jpg" || from == "jpeg") && to == "png": | ||
| jpeg.Encode(fso, img, nil) |
There was a problem hiding this comment.
pngもそうですが、エンコード処理はエラーになりうるもので関数もエラーを返しているのでエラー処理が必要です。
|
おそらく不要である画像ファイルがコミットされているので消した方が良いです。テストデータとして画像をあげるケースもあるかと思うのですが、その時にはtestdataというディレクトリとし(go上でテストデータとして扱われます)、ファイルサイズも小さなものとすると良いでしょう(今上がっているMBを超えているファイルはでかいです)。 |
課題 1:画像変換コマンドを作ろう
お忙しいところ恐れ入りますが、もしよろしければレビューを頂けますと幸いです
画像を指定の形式に変換する
変換後の画像ファイルは元の画像と同じディレクトリに配置される
コマンドラインオプション
使い方