LoginSignup
0
0

More than 1 year has passed since last update.

Ruby で開発する時に、少し助けになる(かも知れない)小ネタ

Last updated at Posted at 2022-06-15

はじめまして。
Qiita は読み専だったのですが、アウトプットも行いたいと思い、投稿をすることにしました。
よろしくお願いいたします。

概要

Ruby でより良いコードを書くための話題では無いです。(すみません)

開発時、特に動作確認(不具合修正を含む)を行う時に実施すると
少しだけ作業に掛かるコストが低減される
というお話しです。

1. デバッグ目的の出力処理などは行頭に書くと良い(理由:あとで探しやすいから)

(これは Ruby に限った話しではありませんが)
簡単な動作確認のために、中身を見たいオブジェクトの内容を
出力させて目視する、という手段は一般的かと思います。
そのような(最終製品には含まれない)目的で使うコードは行頭から書くと良いです。
このような感じです:

def hoge(arg)
  if arg.class != Hash
print "arg の class は? : "; pp arg.class
  end
  ...
end

このように書いておくと、後で(必要なくなってから)削除する時に
^p(p|rint|uts)
という(正規表現による)検索一つで、一括削除できます。

2. 同様に exit も行頭に書くと良い

動作を確認する時に、処理の途中で中断したい時は exit を使う事もあると思います。(自分はそうしています)
その時も行の先頭に書くと良いです。
理由は上記 1. と同じで、どこで強制終了させているのかが探しやすいからです。

3. それ専用の exit を用意する

単純に exit を書くだけだと、コンソール出力上は問題なく終了したように見えてしまう、という問題が起きることがあります。
そのため、このように:

  def 自分が作成したクラス.exit_force()
    puts  # 以下で出力している情報を見やすくするため、最初に改行する
    puts "<<< 強制的に exit() しています >>>" # 何をしているかをユーザに表明しておく
    puts "呼び出し履歴 :"
    pp caller() # 呼び出し情報を表示する。一番近いところだけなら caller()[0] を表示すれば良いです
    exit
  end

自前で専用メソッドを作成/使用する事で、確実に
「意図して中断している」
事が分かるようになります。
また上記コード例のように
caller()
も出力することで、「どこで」中断しているかという情報も確認できます。

以上です。
これだけの事ですが、やってみると割と役に立ちます(実体験)。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0