rubyのコーディング規約 @ niigata.rb #3

21
Rubyのコーディング規約

Upload: mihyaeru-takano

Post on 24-May-2015

687 views

Category:

Technology


0 download

DESCRIPTION

Niigata.rb #3 の資料です。 ほとんど参考サイトからかいつまんだ程度をアップするのは忍びない気も…。

TRANSCRIPT

Page 1: Rubyのコーディング規約 @ Niigata.rb #3

Rubyのコーディング規約

Page 2: Rubyのコーディング規約 @ Niigata.rb #3

¡ ミヒャエル ¡ @mihyaeru21

¡ 長岡技術科学大学 ¡ Python, Objective-C ¡ 来年度からPerlな会社で何か ¡ 本業は提督 (レベル71)

自己紹介

Page 3: Rubyのコーディング規約 @ Niigata.rb #3

Rubyの勉強会ですが

Page 4: Rubyのコーディング規約 @ Niigata.rb #3

Rubyはほとんど やったことない

/(^o^)\

Page 5: Rubyのコーディング規約 @ Niigata.rb #3

コーディング規約だけなら ちょっと調べればなんとか…!

Page 6: Rubyのコーディング規約 @ Niigata.rb #3

¡ コードの書き方を統一 § 他人のコードも読みやすい § 自分のコードも読まれやすい § 構造の異常を発見しやい

¡ 言語や会社、団体によって様々な規約 ¡ 今回は、一般的な Ruby の規約をかるく

コーディング規約

Page 7: Rubyのコーディング規約 @ Niigata.rb #3

命名規約

Page 8: Rubyのコーディング規約 @ Niigata.rb #3

¡ パスカルケース ¡ “_” は使わない

ClassModuleName

Class_NamemoduleName

クラス名・モジュール名

Page 9: Rubyのコーディング規約 @ Niigata.rb #3

¡ 全て小文字 ¡ 単語は動詞の原形 ¡ “_” で単語区切り

do_somethingmethod_name

methodNameDoSomethingMethod_Name

メソッド名

Page 10: Rubyのコーディング規約 @ Niigata.rb #3

¡ 全て小文字 ¡ 単語は動詞/形容詞 ¡ 末尾に “?” を付与 ¡ “is_” を付けない

movable?visible?

is_movableis_visible?

メソッド名 真偽値を返す場合

Page 11: Rubyのコーディング規約 @ Niigata.rb #3

¡ 全て大文字 ¡ “_” で単語区切り

CONSTANTCONSTANT_VALUE

ConstantValueBADCONSTANT

定数名

Page 12: Rubyのコーディング規約 @ Niigata.rb #3

¡ 全て小文字 ¡ “_” で単語区切り

variablelong_long_variable@instance_variable$global_variable

VariablebadVariable

変数名

Page 13: Rubyのコーディング規約 @ Niigata.rb #3

¡ 全て小文字 ¡ “-” で単語区切り ¡ ファイル中の主な クラス名を使う

file.rbclass-name.rb

File.rbclass_name.rb

ファイル名

Page 14: Rubyのコーディング規約 @ Niigata.rb #3

構文の規約

Page 15: Rubyのコーディング規約 @ Niigata.rb #3

¡ スペース2つ ¡ タブは使わない

if hoge == 1 x = fugaend

if hoge == 1 x = fugaend

インデント

Page 16: Rubyのコーディング規約 @ Niigata.rb #3

¡ パラメータなし § カッコなし

¡ パラメータあり § カッコあり

def hoge return 1end

def fuga(x, y) return x * yend

def hoge()end

def fuga x, yend

メソッド定義

Page 17: Rubyのコーディング規約 @ Niigata.rb #3

¡ パラメータなし § カッコなし

¡ パラメータあり § カッコあり

¡ print, puts, p § カッコなし

x = hogefuga(x, y)print x, y

x = hoge()fuga x, yprint(x, y)

メソッド呼び出し

Page 18: Rubyのコーディング規約 @ Niigata.rb #3

¡ { ... } ではなく do ... endを使う

¡ 1行で書くときは { ... } を使う (メソッドチェインだけ?)

arr.each do |x| ...endarr.each { |x| ... }

arr.each { |x| ...}arr.each do |x| ... end

ブロック

Page 19: Rubyのコーディング規約 @ Niigata.rb #3

¡ if の then は省略 ¡ if !hoge は unless hoge にする

¡ 条件が単純かつ 1行で書けるときは 後置の if を使う

if n == 12endunless hogeendprint n if hoge

if n == 12 thenendif !hogeendprint n if hoge && fuga && piyo

条件分岐

Page 20: Rubyのコーディング規約 @ Niigata.rb #3

¡ while の do は省略

¡ while !hoge は until hoge にする

¡ 無限ループには loop do を使用

while hogeenduntil hogeendloop doend

while hoge dowhile !hoge

while true

ループ

Page 21: Rubyのコーディング規約 @ Niigata.rb #3

¡ 省略しても意味解釈に影響ない部分は省略する印象 if の then や、while の do など

¡ 複雑にならないように配慮されている印象 if !x を unless に、while !x を until x にするなど

¡ 郷に入れば郷に従え(郷 = 言語, 会社, 団体, ...)

まとめ

参考: http://shugo.net/ruby-codeconv/codeconv.html