ToDo:
https://twitter.com/omo2009/status/808539204850315264
gflags好きっ子としてはね…というかglobal変数が好きというのがある。GLのアレとかTFのsessionとか、まあ悪くないという感がある。いやそれはあまり関係ないだろうけど
フラグの値をテストの冒頭で挿したりするの、あれはまあいいんじゃないかって感があるケースと、うーん微妙というケースがある気がする
なんかおおざっぱに言うと、フラグが使われるのがモジュール内の奥地で、モジュールのプライベートな関数とかが全部のそのフラグを引きまわすようなケース…これはまあテストの冒頭で挿す方がいいと感じる。なんていうか、テストが汚なくなることによって、プロダクションのコードが綺麗になるならいいじゃないか、的な
一方で、 func(FLAGS_hoge) みたいな感じで渡した引数が func の中だけで使われてないと、これはちょっと引数にして呼び出し側で定義した方がいいかなぁ…などと思うケースも多い気がする
まあでも基本ケースバイケースだと思うんだよなぁ。正直このへんの決定をどっちに倒しても生産性とかに大幅に差は出ないわけで、自分がチーム内で弱い立場なら他の人の決定に従い、強いならちょっと自分の趣味を主張してみる、みたいな、そのくらいでいい気がする。このレベルのことだと、ほげほげというアプローチがグッドプラクティスです、みたいに主張するのも、こう「それによって生まれる軋轢」>「統一によって得られる快適」みたいになる可能性もあるよなと思う
僕はこう一応、このレベルの話に関しては「あ、うん、僕はAの方が好きなんですけどね、まあBの主張もわかるんで…このプロジェクトはBで統一しましょう」みたいな対応をできてる……つもり……だといいな……ホントかな
(00:57)
本質的に書く流儀みたいなのがわれやすい感あるよね。
似たようなちょっと難しいテストケースを複数書く時とか、どうも同じコードをコピペしがちになって、それはよくないと共通部分をくくり出したりすると、それはそれで「テストはのっぺりとした入出力の羅列であるのが望ましい」みたいな感覚と矛盾したりして…
僕はこれについてはどっちかというとくくり出したいタイプかなぁと思う。基本同じロジックが2回以上目に入るのがあまり好きでないのだけど…テストだから小賢しい抽象化しないのが良い、みたいなのが理解できるケースも多いんだよな
まあ知らん系
(01:02)
前 | 2016年 12月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
概ね同意で、話の流れとしては
https://talks.godoc.org/github.com/tcnksm/talks/2016/12/golang-tokyo/golang-tokyo.slide
で flag を optparse みたいに使っている例があり、もともとそうやって使う用に作られたものではないよね、と思ったという話でした。
flag というのは基本的に雑にガチャガチャやるのを助けるための道具であり綺麗にしてしまうと台無しで、しかしガチャガチャやった残骸のせいで辛くなることもあるのであまりサイコーというのも気がひける、みたいな。
はい、フラグのとこだけそのスライド読んでから書いたので、もりたさん同様、「良くない例なの?むしろグローバルがいいだろ」的な感じで書きはじめたけど、まあでもケースバイケースでもあるかなぁとか、もにょり始めた感じでした
グローバルなフラグ、Goが推奨してる1,2文字変数とかと同じで、物をちゃんと考えずに適当に使いまくるととんでもないことになるけど、適切に使ってるぶんにはむしろ良いので、ある程度物を考えられるチームで使うぶんには禁止しない方が良い…みたいな話がありそうな気がします