LoginSignup
8
2

More than 3 years have passed since last update.

超優しい先輩に何度も指摘してもらった"インデント"の流儀

Last updated at Posted at 2019-08-27

はじめに

2019.06.17に人材系営業からRuby on RailsのWebエンジニアになったでみーと言います。
僕は文系出身で開発は全くの未経験ですが、一念発起してJOBチェンジした者です。
とても優しく指導して下さっている先輩たちのもと、コツコツと勉強を進めているのですが、やはり分からない事も多く、先輩の時間を頂くことが多い恐縮な日々です。。
今回、先輩たちに指摘してもらった"インデント"について、文系なりにまとめてみました。

まとめる目的

①なぜインデントが必要なのか

②短な例えで言うとなに?

③どうやって付けるの?

④漏れ抜けしない対策

⑤LT用

読者の対象

最近言語を覚えたエンジニア初心者。
後輩にインデントなんて基礎を教えなきゃいけない先輩エンジニア

なぜインデントを理解できないのか?

未経験者や初心者人からすると、インデントってなにそれ?美味しいの?って感じです。
そもそもプログラミングしている自分の作業が何なのかイメージできない。
だからそういう人たちにも理解してもらう為には、言語化とイメージ化に両方が必要。

①なぜインデントが必要なのか?

そのほうが見やすいでしょう?と言われても、あんまりイメージできない人いませんか?
僕もその一人でした。
まるで「貴様は今まで食ったパンの数を覚えているのか」に等しい感覚でした。
でも、僕たち初心者は綺麗かどうかが分からない。まず存在を理解するだけで精一杯。

でも・・・待てよ・・・俺の遠い昔の記憶がこれに似た経験を・・・

②短な例えで言うとなに?

原稿用紙ッ・・・!!!

p0183_s.jpg

我々、文系でも馴染みのあるインデントはおそらく原稿用紙の記述ルールだろう。
夏休みの宿題、読書感想文、突然見せられた戦争テーマのアニメ映画
今思い出すだけでも久石譲の「summer」が聞こえてきそうな今日この頃だが、
これ以上に脱線せずにインデントの話の続きをします。

[#参考]原稿用紙のルール

原稿用紙には、タイトルを書く時に2マス空けたり、名前の場所に指定があったり、改行にルールがあった。
コレが字下げ、インデントと言われるものだ。
このイメージができるとインデントの必要性が理解できてくる。

例えば、原稿用紙をルール無用で字下げせずに、ひたすらに書き連ねていくとどうだろうか。
とても汚く読みにくい文章になる。
コーディングとは機械のために言語ではあるが、実際に書くのも直すのも人間だ。
ルールだけではなく、表現もそうだ。
いきなり村上春樹みたいな文章書かれても困るのだ。
誰しもがハルキストでは、ない。

③どうやって付けるの?

ルールは会社によって様々だろうが、基本的には半角スペースを2つ付ける。
メソッド名の定義にif文を使うなどする時に[def create]の[end]と[if]の[end]を
きちんと分別しやすくないですか?
def createの条件のためその下のif文はさらにインデントを半角スペース2個分を付ける。
こうすることでend抜けのエラーも把握しやすくなるし、自分も修正しやすくなる。

index.controller.rb (2)
    #カテゴリの新規作成
  def create
    if params[:a_type].present? 
      @create = AType.new(a_type_params) 
    elsif params[:b_category].present?
      @create = BCategory.new(bcategory_params) 
    end

    if @create.save
      @create.update_attributes(name: @create.id)
      redirect_to admin_customizes_index_path
    else
      render :index
    end  
  end

ちなみにインデントが無いとこうなる・・・

index.controller.rb (2)
    #カテゴリの新規作成
def create
if params[:a_type].present? 
@create = AType.new(a_type_params) 
elsif params[:b_category].present?
@create = BCategory.new(bcategory_params) 
end
if @create.save
@create.update_attributes(name: @create.id)
redirect_to admin_customizes_index_path
else
render :index
end  
end

なんか見づらく無いですか??
こういう風に理解すると初心者の僕にもとても分かりやすいのだ。
人よがりな自己満足な書き方をしても、それは仕方ない。
さらに初心者は自分でコードの良し悪しが分からないんだから、余計にそうだ。
せめて人に「見ていただく」という視点を意識して今後も一緒に頑張っていきましょう。
僕も覚えがいい方では無いから、皆さんと一緒に頑張っていきたいです。

④漏れ抜けしない対策

Visual Studioを使っているんですが、先輩にコレを入れてもらいました。
https://mimumimu.net/blog/2012/06/22/visual-studio-%E3%81%A7%E3%81%AE%E3%82%A4%E3%83%B3%E3%83%87%E3%83%B3%E3%83%88%E3%81%AE%E6%95%B4%E5%BD%A2%E6%96%B9%E6%B3%95%E3%80%82/

tabボタンを押すと自動でインデントが入る仕組みになります。
めっちゃ楽・・・スペースを押すために手を下にやる必要がなく便利です。

8
2
2

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
8
2