wcコマンド 修正_2回目の判断をなくす
とりあえずコンパクトにリファクタリングできてきたものの、まだだめらしい・・・
心折れかけてるけど考えてみる。
あと直す箇所
重複というか、条件分岐を似た内容で2回しているのでそこをなくすのが必要みたい。
ということで、現状は、
input_contents = ARGF.argv : [$stdin.read]
としているけれど、これだと前者は[ファイル名複数要素]、後者は[ファイルの中身1要素]という状態なので、これを下記のように二次元配列にする。
[[ファイル名 , ファイルの中身]]
なので二次元配列の[0]を使うか、[1]を使うか考えていく。 ただ、後者の標準入力の場合は[nil , [ファイルの中身]]で十分であるが、前者の場合は ファイル名とファイルの中身をセットにして配列を作る必要がある。
[[ファイルA , Aの中身],[,],[,]…]
と組で配列を作る必要がある。 なので,前者のようなファイル指定の時の処理分岐は,
どこまでがカンニングがわからないよね
input_contents.each do |content| content[1].each do |file_data| #ファイル内容の集計値の出力処理 #複数の場合はトータルを集計 end content[0].each do |name| #ファイル名出力の処理 end end
こんな感じでおそらくいるのかなと。
リファクタリング
コンパクトにする,他の人が読んでわかりやすくする,修正しやすいようにする。という認識ぐらいでしたが,実際にビフォーとアフターをガッツリ見たことがないので「ふーんそうなんだ」くらいの印象でした。
てことで調べたらこんな記事が出てきまして。
すごく腑に落ちた感じです。
バグの連鎖はキツいな・・・
今プラクティスで作っているものは単純な処理だけだけど,Webアプリを外部向けに作るとなるとバグももれなくくっついてくる。機能追加でアップデートするとまたもれなくバグが発生する。
バグを修正したら新たなバグを生む・・・という恐怖の連鎖。
プログラマーという肩書きだけでなんかスマートで今どきで,オフィスがオシャレで自由で・・・という幻想抱きやすいけど,プログラマー=忍耐力いるなあという印象になった。忍耐忍耐・・・。
私自身農学部出身ですが、2回生ごろまでは頑張っておしゃれして登校するものの、卒論や就活、資格試験にバイトとみっちり入れた頃はオシャレ着→ジャージ+最低限眉毛のみ描く。という状態になってたな。多分ゴリゴリコード書いていくとこんな感じになりそうだなあ。
もう今が既にそんな感じかもしれない。
さらに今朝修正しました
上記の直しに「1行でまとめられませんか?」と直しがヒント付きで返信きまして直す。
map
の使い方はまた見直さないとな,と気づいた。