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

exercim演習(メソッドとデフォルトの引数) #36

Merged
merged 1 commit into from
Nov 2, 2023

Conversation

kei-600th
Copy link
Owner

分報

exercim問題演習
メソッドとデフォルトの引数
※詳細なアウトプット内容についてはプルリクページ内の"File changed"タブを参照

学習したこと

  • デフォルト引数の設定

学習を通して考えたこと

  • デフォルトの値を設定せず引数のみをメソッドに設定した場合、そのメソッドに対して引数が渡されないとエラーが出てしまう
  • デフォルトの値を設定して引数をメソッドに設定した場合、そのメソッドに対して引数が渡されなかった場合、設定された引数に対してデフォルト値を当てはめて処理を行う
  • 最初この性質に気づいてなかったのでどのように実装すればいいかわからなかったが、以下のリンクにヒントが書いてあったため、これを参考にさせてもらった
    Implement new exercise, two-fer #757

@kei-assistant
Copy link

[良い点]
[1] クラスメソッドとして定義されており、全体的にコードがシンプルで読みやすいです。
[2] メソッドの引数にデフォルト値を設定することで、引数がない場合でもメソッドが呼び出せるようになっています。
[3] 三項演算子を使って条件分岐を行うことで、コードが短くてスマートです。

[改善点]
[1] "default"という文字列を使って名前が与えられていない場合を表現していますが、ここではnilを使う方が適切かもしれません。nilは「何もない」状態を表現するのに適しており、そのためにRubyで用意されています。また、"default"という具体的な文字列だと、将来的に"default"という名前の人が現れた時に問題が起きる可能性があります。
[2] メソッド名はRubyの慣習に従ってスネークケースにするとより良いです。例えば、two_ferではなくtwo_forとするなどです。

@kei-600th
Copy link
Owner Author

レビューbotがいい指摘を返してくれており、文字列"default"を設定するよりはnilを設定する方が適している

class TwoFer
  def self.two_fer(name = nil)
    name ? "One for #{name}, one for me." : "One for you, one for me."
  end
end

この方が、変数が与えられていない場合の処理をわかりやすくキレイに書けていると思う

@kei-600th kei-600th merged commit 162a43d into main Nov 2, 2023
1 check passed
@kei-600th kei-600th deleted the exercism-Two-Fer branch November 2, 2023 04:42
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