SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
Rubyのコーディング規約
¡ ミヒャエル
¡ @mihyaeru21
¡ 長岡技術科学大学
¡ Python, Objective-C
¡ 来年度からPerlな会社で何か
¡ 本業は提督 (レベル71)
自己紹介
Rubyの勉強会ですが
Rubyはほとんど
やったことない
/(^o^)\
コーディング規約だけなら
ちょっと調べればなんとか…!
¡ コードの書き方を統一
§ 他人のコードも読みやすい
§ 自分のコードも読まれやすい
§ 構造の異常を発見しやい
¡ 言語や会社、団体によって様々な規約
¡ 今回は、一般的な Ruby の規約をかるく
コーディング規約
命名規約
¡ パスカルケース
¡  _ は使わない
Class
ModuleName
Class_Name
moduleName
クラス名・モジュール名
¡ 全て小文字
¡ 単語は動詞の原形
¡  _ で単語区切り
do_something
method_name
methodName
DoSomething
Method_Name
メソッド名
¡ 全て小文字
¡ 単語は動詞/形容詞
¡ 末尾に ? を付与
¡  is_ を付けない
movable?
visible?
is_movable
is_visible?
メソッド名 真偽値を返す場合
¡ 全て大文字
¡  _ で単語区切り
CONSTANT
CONSTANT_VALUE
ConstantValue
BADCONSTANT
定数名
¡ 全て小文字
¡  _ で単語区切り
variable
long_long_variable
@instance_variable
$global_variable
Variable
badVariable
変数名
¡ 全て小文字
¡  - で単語区切り
¡ ファイル中の主な
クラス名を使う
file.rb
class-name.rb
File.rb
class_name.rb
ファイル名
構文の規約
¡ スペース2つ
¡ タブは使わない
if hoge == 1
x = fuga
end
if hoge == 1
x = fuga
end
インデント
¡ パラメータなし
§ カッコなし
¡ パラメータあり
§ カッコあり
def hoge
return 1
end
def fuga(x, y)
return x * y
end
def hoge()
end
def fuga x, y
end
メソッド定義
¡ パラメータなし
§ カッコなし
¡ パラメータあり
§ カッコあり
¡ print, puts, p
§ カッコなし
x = hoge
fuga(x, y)
print x, y
x = hoge()
fuga x, y
print(x, y)
メソッド呼び出し
¡ { ... } ではなく
do ... endを使う
¡ 1行で書くときは
{ ... } を使う
(メソッドチェインだけ?)
arr.each do |x|
...
end
arr.each { |x| ... }
arr.each { |x|
...
}
arr.each do |x| ... end
ブロック
¡ if の then は省略
¡ if !hoge は
unless hoge にする
¡ 条件が単純かつ
1行で書けるときは
後置の if を使う
if n == 12
end
unless hoge
end
print n if hoge
if n == 12 then
end
if !hoge
end
print n if hoge && fuga
&& piyo
条件分岐
¡ while の do は省
略
¡ while !hoge は
until hoge にする
¡ 無限ループには
loop do を使用
while hoge
end
until hoge
end
loop do
end
while hoge do
while !hoge
while true
ループ
¡ 省略しても意味解釈に影響ない部分は省略する
印象
if の then や、while の do など
¡ 複雑にならないように配慮されている印象
if !x を unless に、while !x を until x にするな
ど
¡ 郷に入れば郷に従え(郷 = 言語, 会社, 団体, ...)
まとめ
参考: http://shugo.net/ruby-codeconv/codeconv.html

Más contenido relacionado

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

一人でも出来るコードリーディング
一人でも出来るコードリーディング一人でも出来るコードリーディング
一人でも出来るコードリーディング
Taiyo Akashi
 
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
xibbar
 

Similar a Rubyのコーディング規約 @ Niigata.rb #3 (10)

Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
Reudy on Ruby1.9
Reudy on Ruby1.9Reudy on Ruby1.9
Reudy on Ruby1.9
 
リーダブルコード 1.0'
リーダブルコード 1.0'リーダブルコード 1.0'
リーダブルコード 1.0'
 
一人でも出来るコードリーディング
一人でも出来るコードリーディング一人でも出来るコードリーディング
一人でも出来るコードリーディング
 
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
 
「いいコード」をみんなで書こう!
「いいコード」をみんなで書こう!「いいコード」をみんなで書こう!
「いいコード」をみんなで書こう!
 
20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka
 
プログラマ人生論
プログラマ人生論プログラマ人生論
プログラマ人生論
 
名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道
 
How to learn Rails
How to learn RailsHow to learn Rails
How to learn Rails
 

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