##はじめに
脱初心者にむけてアウトプットをしていこうと思って記事を書いております。
間違ったことがありましたら、ぜひコメントいただけると幸いです。
##Railsとは何か
railsはRubyのフレームワークです。
フレームワークとはアプリケーション開発やシステム開発を楽に行えるように必要な機能を予め用意してあるプログラムの雛形のこと。
##Railsには基本理念がある
この基本理念を遵守することでこのフレームワークの能力を最大限に生かすことができる。
つまりこの基本理念を守ってプログラムを書こうということです!
##DRY
DRYとはDon't Repeat Yourselfの略で、同じ情報を繰り返し定義しない、という考え方です。メリっどとしてコードの量を減らすことで、可読性が向上することや、アプリケーション自体の動作が早くなるというメリットがある
####例えば
class EventsController < ApplicationController
def index
@events = Event.all
end
def new
@event = Event.new
end
def show
@event = Event.find(params[:id])
end
def create
Event.create(event_params)
redirect_to events_path notice:"作成しました"
end
def destroy
@event = Event.find(params[:id])
@event.destroy
redirect_to events_path, notice:"削除しました"
end
def edit
@event = Event.find(params[:id])
end
def update
@event = Event.find(params[:id])
if @event.update(event_params)
redirect_to events_path, notice: "編集しました"
else
render 'edit'
end
end
private
def event_params
params.require(:event).permit(:title, :start_time, :content)
end
end
このような記述があったとして、繰り返し記述してる部分は
@event = Event.find(params[:id]) です。
#####これを構文をDRYの理念に遵守すると
class EventsController < ApplicationController
before_action :set_event, only: [:edit, :show, :update, :destroy]
def index
@events = Event.all
end
def new
@event = Event.new
end
def show
end
def create
Event.create(event_params)
redirect_to events_path notice:"作成しました"
end
def destroy
@event.destroy
redirect_to events_path, notice:"削除しました"
end
def edit
end
def update
if @event.update(event_params)
redirect_to events_path, notice: "編集しました"
else
render 'edit'
end
end
private
def set_event
@event = Event.find(params[:id])
end
def event_params
params.require(:event).permit(:title, :start_time, :content)
end
end
このようにコードが少なくなり可読性を向上させることができます。
(わかりずらかったら申し訳ないです。)
この場合before_actionというそれぞれのアクションが実行される前に処理を行うことでそれぞれのアクションの記述量を減らして結果的に可読性も上がるということで、いいことしかないのです。
##CoC
CoCとはConvention Over Configurationの略で、設定よりも規約を優先するという考え方です。
Railsを使ったことがある方ならわかるかと思いますが、コマンドだけでファイルを生成してくれたりrailsが勝手に処理を用意してくれたりなど、『全て設定よりも規約を優先』することにより開発スピードが上がったり結果的に質も担保してくれるなど、いいことしかないのです。
####例えば
規約を無視しているコード
class TestsController < ApplicationController
def render_top_page
render template: "tests/index"
end
end
規約にそったコード
class TestsController < ApplicationController
def index
end
end
このように記述量も減り可読性が上がり、結果的に開発スピードをあげることになるのです。
##まとめ
私は初心者なのですが、この基本理念を忘れて強引にコードを書いたりしてしまい、エラーが起きてしまうことが多々ありました。
なので、今回は初心に戻るという意味で、基本理念を記事にしてみました。
ここまで読んでいただきありがとうございます。