wcコマンドをrubyで作る再提出
あまりにも指摘事項に対してチンプンカンプンだったのでペアプロお願いしました。 鉄は熱いうちに打てということで、分かったことと今後やるべき内容をまとめておこうと思う。
※チンプンカンプンって変換したら珍紛漢紛って出てきた。由来これなのかしら。
ペアプロたのも〜
実際見てもらう、アドバイスもらうのは苦手意識がついています。
なんで苦手になってるか過去の体験に遡る〜
というのも6年ほど前にjavascriptを勉強していたんですが、まだ大学出たばっかりで右も左もわからんし、 具体と抽象の質問で考えるとかなり抽象的に質問したのはわかる。
ただ・・・
当時テラテイルの粛清とも言えるアドバイスはほぼほぼマサカリに思えて。 質問するたびに怒られ、ググれカス言われる(実際ここまで言われてませんが婉曲表現好きな人いますよね)
そしてヤフ知恵に逃げ込んでも同じ感じの方が多い。 他の質問見てもわざわざ返信欄に「はあ・・・だから、」 と付け加えている。
わかる立場になるとわからんこともないけど、あんまりじゃない? そうでもない?ここは初学者ぴえんポイントのはず。
何でこんなに言われないかんのか当時考えた
費用負担が安く学べるプログラミングなので、先駆者から見たら
- 夢見がちな若者に正義の鉄槌
- GRIDないやつに出る杭を打とうかね
- 誇大広告から夢見がちなやつにリアルを教えてやろう
- シンプルにもうちょっと調べ学習進めて知識持ってから聞こうぜ?(抽象→具体)
- 察してもらうようなテキストコミュニケーションやめれ
のどれかor複合で感じているかもしれない。
という過去の経験からちょっとテキストコミュニケーション震える。 ブルブルブル・・・
自分もこういった過去があったので、身近な人に 「プログラミング学習って私でもできる?」と不意に聞かれると返答に戸惑う。
でも言えることは、
- 仕事が効率的に自分で順序考えてできてたなら素地はあるのでは?
- 今後も使う機会があるのか?
- プログラミングで何がしたいの?
- かける時間と費用はこのくらいだけどOK?
- 続けられそうです??
素地×時間×費用×気合い(継続力)
が高ければ高いほどできると思ってる。 ただできる≠習得ではない、プログラミング学習=青天井
という過去があるので、ちょっと緊張はする。
そしてペアプロ前に大体昼寝してるので、寝ぼけてることがある(すみません)
wcコマンドの指摘事項
これとこれ共通化できますよね?
うん、何となくわかる。 ただ、自分が何でここ分けたのか思い出すのに10分ぐらいかかる。
一回作って放置して・・・
直してまた期間が空いて・・・
💡!
ああそうです。
🐙:「確か、ファイル指定と標準入力を見分けるのが必要かと思ってif文
で冗長的になってました。」
メンターさん:「なるほど。でも・・・」
ここで指摘が入り、具体的なアドバイスをもらえた。
わかったこと
このメソッドをうまく活用しましょうということ。
文字列を返すread
と$stdin
をうまく組み合わせて使いましょう。と
なるほど。
リファレンスは逆引きできない
何で今回こんな行き違いというか、わからない状態が続いたかというと、
最適なメソッド検索がわからないから起きたと思ってる。
結局標準入力の仕方をreadlines
以外知らなかったんですね。
実際どこに何があるか、読書のごとくリファレンスを見ているというよりかは、 何か必要性があったときに探してみる。方が強い。
なので、
- こういう処理をしたいのでこういうメソッドが欲しい
- 「なんかワード」検索する
- それっぽい記事が出てくる
- 記事に書いてあるメソッドをリファレンスで調べる
大体この順序なので、この一つの工程に対して一つのメソッドしか知ることがない歯痒さがある〜 紙の辞書なら前後左右の事柄が視界に入るから一個調べても同時に何個も知識が入るけど、 4.でピンポイントに調べるから一つしか得られない。
結局リファレンスを隅々見ろよと言われたら、 そういうもんなんですね。としか言えない、ね。
それに逆引きできても日本語の表現なんてわんさかあるからヒットするまで頭の中で言い換え=変換を繰り返してグーグルさんにお願いするしかない。 「〜 ruby」「ruby 〜」「メソッド 〜 ruby」・・・とか何回検索したことか。
- でもこの地道な作業を乗り越えた先に先駆者はいるのかしら。
- それとも新卒入社で入ってOJTで先輩がきっちり現場知識叩き込んでくれた人々なのか。
わからないけど、マサカラナイでといいたい。
この検索作業は地味にストレスですね。 いい方法求む・・・
直すべき項目
- 先ほどのメソッドで一つの変数で扱う
input_contents = (!ARGF.argv.count.zero? ? ARGF.argv : readlines)
- 標準入力かファイル指定の値か変数を識別する処理が必要
一つの変数(input内容)に対して同様の処理を行うことでリファクタリングしてるのであれば、 この識別が必要になるよね。
🐙:「こことこれで〜・・・仮にディレクトリ内部に1つしかファイルが存在しない場合の標準入力とファイル指定の変数に対する識別はどう・・・?」
メンターさん:「・・・それを考えるのも課題なので・・・。」
🐙:「ですよね(💦)」
学校のテスト中に先生に質問して返される時と同じ現象が起きた。
なので変数に与えた内容が標準入力でもファイル指定でも同様の処理で済むように工夫が必要ということ。 そして考えないといけないのは上記の識別方法というところ。
うーん。
一晩寝かすか。(やれよ)