「Ruby 1 はじめてのプログラミング」tipsめも

近所の図書館にあったので今更ながら借りてきた。

プログラミング学習シリーズ Ruby 1 はじめてのプログラミング

プログラミング学習シリーズ Ruby 1 はじめてのプログラミング

ところがこれが非常に良書!Rubyじゃなくデジタルのことから説明を始めて、文字コード、ファイル形式、ハードウェア・ソフトウェア、プログラミング言語コンパイルVMのことまで!中学校の情報科目の教科書に推薦したい。
で、Rubyに関しての説明では、オブジェクト指向を中心にしていないので、Rubyの教科書としては主流になり得ないと思われ。メソッドではなく「関数」と書いてるし。
でも所々にtipsが載っているのでメモしていきます。見出しが載っていた文で、それ以降が私の独り言です。

関数を作る目的のほとんどは、プログラム内で同じようなことを書かなくても済むように、プログラム内の共通化できるコードを一箇所にまとめること

(第5章 数値計算と関数 5-3 関数の定義 p.127)
もちろんここで書かれている「関数」とは、Rubyだとメソッドなのです。関数と言ってしまうと、オブジェクト指向の方々から叱責を受ける気がするんですけど、でも初学者には関数のイメージの方がやりやすいと思うので、私もここでは「関数」と書かれていてる方がありがたいです。

Rubyの関数名は英字で開始して、英数字または_をつなげます。Rubyの規約では、英大文字を使わず、複合語を関数名にする場合には_で区切ります

(第5章 数値計算と関数 5-3 関数の定義 p.131)
「規約」とまで言ってしまっていいのですかね。でもこれに従ってやったほうがいいのは、いろいろ見ているうちに分かってきました。

関数名は「動詞+目的語」の形式が一般的

(第5章 数値計算と関数 5-3 関数の定義 p.135)
この形式でやっていく!と決めればどーでも良いとは思うのです。でも「動詞+目的語」に落ち着きそうな気はしますw

(メソッドの)仮引数の並び順

  • 固定的な情報を先に、呼び出し毎に変わる情報を最後に(単に筆者の好みです)
  • そのほかに、「関数内で参照される順に並べる」

(第5章 数値計算と関数 5-3 関数の定義 p.136)
ハッシュは後ろにした方が便利ですよね。

関数のコメントはRDocが処理できる形式で上記の情報(引用者註:引数・処理・戻り値)を記述します

(第5章 数値計算と関数 5-3 関数の定義 p.138)
コメントを書くを初学者の頃から付けさせるのは非常に大事なことだと思います。私自身は、明日の自分のためにコメント付けしてますけどねw
おまけ:RDoc参考リンク

さらにおまけ:YARD参考リンク

配列では初期化なしにいきなり fib[0] = 0 と書くことはできません。

fib = 0 の動作
  • fibはnilを参照している
  • 代入によりfibは0を参照する
fib[0] = 0 の動作
  • fibはnilを参照している
  • 代入fib[0] = 0によりfib[0]はnil[0]に書き換えられるが、nilは配列ではないのでエラー
fib = []; fib[0] = 0 の動作
  • fibはnilを参照している
  • fib = []により空配列が代入され、fibは「配列」を参照している
  • 代入fib[0] = 0によりfib[0]は「配列」[0]に書き換えられ、「配列」のインデックス0の位置に0が設定される

(第7章 データの集合 7-1 配列 p.205)
この説明は非常に分かりやすかったです。

クラスメソッドは、処理の分類としてそのクラスに属するけれども、特定のオブジェクトと関連付ける必要が無い処理を実行します。

例えば、pwdクラスメソッドはディレクトリを扱うDirクラスに属しますが、処理対象は「現在のディレクトリ」と決まっているため、特定のオブジェクトと関連付ける必要がありません。こうしたメソッドは、クラスメソッドとなります。

(第8章 ディレクトリ・ファイルとRubyのオブジェクト 8-2 配列 p.247)
特定のオブジェクトと関連付けなくてもよい処理…そう言われればそうかも。