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

ローマ数字変換プログラム(第4回スキルアップ勉強会) #8

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

Okunichiyou
Copy link

@Okunichiyou Okunichiyou commented Oct 14, 2024

コードレビュー受けるのが怖くて視聴者枠で申し込んだのですが、レビュー受けた方が良いだろうと思い直しプルリクエストを作成させていただきました。

  • コードのアピールポイント
    • 頑張ったところ
      • アラビア数字とローマ数字の変換の規則を頑張って理解しました
    • 苦労したところ
      • 変数名を考えるのに苦労しました
        • IV, IX, XLとかの減算則で書かれているものをまとめたハッシュの命名や、V, L, Dなど 10 進数だと無い桁の変数名をどうしようかと悩みました(そもそも、言語化が難しい概念を変数に入れて処理するというロジックが良く無いのだとは思いますが)
    • 工夫したところ
      • deromanize メソッドは、減算則表記のものを先に除くことで、計算ロジックを簡単にできたように思えます
  • コードを書くのにかかった時間(ざっくりでよいです。10 分、1 時間、3 日、etc.)
    • 3 時間
  • だいたいのプログラミング歴
    • 1 年半(Ruby は半年)
  • 実際に解いてみた感想
    • 規則探して、コードに落とし込むというのは楽しかったです
    • 書いてる途中、他の人はどんな感じで書いてるのかが、めっちゃ気になりました
    • 見直してみても頭にスラスラと入ってこないので、自分のコードはよろしくないコードなのだろうと思いつつ、一体何がいけないのか言語化できない状態です
      • gsub!で破壊的にしてるのとか、条件式でif num == 4 || num ==9みたいに、ぱっと見で意味の分からない値を入れている点は良くないだろうなと思いつつ、どうアプローチすれば良いものか分からないです
  • 自分のロジックを詳しく解説したブログ記事(もしあれば)
    • 無いです
  • 伊藤さんにメッセージ
    • チェリー本と every day rspec、Qiita の記事を読ませていただいています
    • 参考にさせていただいている本の著者ということもあり、伊藤さんは自分にとって雲の上の存在です
    • お手柔らかにお願いしたく思います

@JunichiIto
Copy link
Collaborator

参加ありがとうございました!動画でレビューしたのでこちらをご覧ください〜。
https://www.youtube.com/watch?v=gLtCh2upoN8

@Okunichiyou
Copy link
Author

動画拝見しました。
ありがとうございます!

  • 戻り値を使いたくないのなら、nextは別の行で書いた方が良いということ考えたこともなかったです。1行で書けると思ったところは1行で書いた方が良さそうと思い込んでたのですが、概念的に違うことは同一の行に収めるべきではないのですね
  • prependを同じように使ってる所は無駄で、if文で合致した時の値を変数に格納するようにすると、prependの記載は1箇所にできるの、勉強になりました。
  • 確かに、invertした定数を用意した方が見やすいですね
  • 空の配列にループして追加する流れにすると、map使ってコード短くできるテクニック思いつかなかったです

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants