質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

914閲覧

Rubyでのreturnについてのコーディング規約

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

1クリップ

投稿2018/01/10 10:32

Rubyのコーディング規約に目を通していたところ、「メソッドの値を返す場合は、必ずreturnを使用する。 また、returnの括弧は省略する。」と書かれていました。

この部分ですが、Rubyでは返り値を求めるときにreturnが不要と言われていますが、コーディング規約の内容と相反するので疑問に思った次第です。

Ruby

1 2#規約の方法 3def add(x, y) 4 return x + y 5end 6 7#規約でおすすめしないとされている方法 8def add(x, y) 9 x + y 10end 11 12

上記のコード両方でも同じ結果がかえって来ますが、規約で誤った例とされるのは、どのような意図があるのでしょうか?

よろしくお願いいたします。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Ruby のコーディング規約は一つではなく,return は積極的に略すべしという派と,略すべからず派とがあります。

前田修吾さんの Rubyコーディング規約 では

メソッドの値を返す場合は、必ずreturnを使用する。

となっていますね。これをご覧になったのでしょうか。

私は省略派ですが,

rb

1def foo 2 return if なんとか 3 かんとか 4end

のように略せない場合があるほか,複雑なコードだと return を書いたほうがわかりやすい場合もあります。

であれば,「この場合は略す,この場合は略さない」とするよりも,一律にすべての return を書くことにする,というのも一つの見識かな,とは思います。

下記の Qiita のコメントに少し書きましたので,ご参考になれば。

https://qiita.com/qqyyhii/items/04c679148111913948a1#comment-24483cb91aa2e97cede4

投稿2018/01/10 11:03

scivola

総合スコア2108

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/10 11:34

ありがとうございます。 Qiitaのほうも参考になりました(^^)
guest

0

ベストアンサー

Rubyは非常に自由な言語です

それゆえ、各々で規約で書き方を規定しないと読み解くのが大変になってしまいます。

「メソッドの値を返す場合は、必ずreturnを使用する。 また、returnの括弧は省略する。」

については、おそらく

  • ifなどを付けた時にreturnを使わないと意味が変わる事がある
  • 他言語メインの人が解読するときに困惑する

のが問題なのだと思います

rb

1def a(x, y) 2 x + y 3end 4 5def b(x, y) 6 return x + y 7end

この2つのメソッドは同じです
後にxが負の場合にはyを返したいとします

rb

1def a(x, y) 2 if x < 0 3 y 4 end 5 x + y 6end 7def b(x, y) 8 if x < 0 9 return y 10 end 11 return x + y 12end

これはaのみ意図通りには動きません

投稿2018/01/10 11:02

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/10 11:33

ご説明ありがとうございます。具体例をいただいてすっきりいたしました(^^)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問