Ruby 初心者スレッド Part 62

■ このスレッドは過去ログ倉庫に格納されています
2017/11/24(金) 00:35:29.31ID:rLZHdQ3Q
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 61
https://mevius.5ch.net/test/read.cgi/tech/1503644351/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
2017/12/22(金) 21:24:19.52ID:6yk8gXaG
>>500
> 単純に静的言語はコンパイルである程度構文エラーを検出できるから楽を、
> リファクタリングが楽だと思ってるんじゃないかな

違うよ。静的型付け言語の場合が簡単なのは、
ソースコード上に型が書いてあるからだよ
コンパイルエラーは関係ない

例えば

class Klass {
2017/12/22(金) 21:28:48.59ID:6yk8gXaG
(間違って途中で送信した)

例えば

class Klass {
  function foo() { }
}

みたいなクラスがあって、
fooをbarに書き換える時

↓ このように型が書いてあれば、ここのfooもbarに
書き換えなきゃいけないとわかる

function f(Klass k) {
 k.foo();
}


↓ でもこの場合は、書き換えれば良いのかわからない

function f(k) {
 k.foo();
}

ソースコード全体から、fを呼び出している所をすべて探して
引数にKlassクラス(もしくはそれを継承したクラス)を
渡していることを確認しなければいけない
2017/12/22(金) 21:38:46.01ID:6yk8gXaG
今回は一番簡単な例としてメソッド名の変更を例にしたが
例えば、メソッドの引数の数が変わったときも
型がわかれば、メソッドが特定できるので、変えなければいけない場所がわかる
メソッドが消えたこともわかる
クラス名で検索すれば、そのクラスを使ってるモジュールもわかるしね

シグネチャの変更に関わる部分は、静的型付け言語の場合は
すごく簡単に変更すべき場所を特定できる
2017/12/22(金) 21:40:18.92ID:6yk8gXaG
ここにリファクタリングの種類が書いてあるが、大部分は
シグネチャ(クラスやメソッドの名前や引数の変更)を伴うものだよ
https://so-zou.jp/software/tech/programming/tech/refactoring/
■ このスレッドは過去ログ倉庫に格納されています