LoginSignup
26
26

More than 5 years have passed since last update.

コードを改善する<br>3つの方法

Last updated at Posted at 2016-11-10
1 / 25

コード改善 meetup #2

http://kaizen.connpass.com/event/42118/

の発表資料。


自己紹介

名前: 正徳 巧
会社: 株式会社grooves
言語: Ruby
github: sinsoku
twitter: @sinsoku_listy


jobs.png


コードを改善する
3つの方法


コードを改善する3つの方法

1. :knife: コードを削る

2. :pill: コードを直す

3. :cop: 増殖を防ぐ


:knife: コードを削る


よくありそうな業務コード

  • 条件分岐が多い
  • 似たような処理が複数箇所にある
  • コピペっぽいけど微妙に違う
  • 既存の仕様が謎

:broken_heart: ココロ、オレル


未使用メソッドを探す

$ git grep -n '\.method_name'
$ git grep -n 'def method_name'

未使用メソッドは基本的に 全削除 する。


全削除に対する不安

  • いつか使うかも...
  • disabled? の対象性のため enabled? も...
  • どこかで使っているかも...

全削除に対する不安

  • いつか使うかも...
  • disabled? の対象性のため enabled? も...

=> 使 い ま せ ん

  • どこかで使っているかも...

=> 問題が起きても Git で戻せます


:pill: コードを直す


ボーイスカウト・ルール

ボーイスカウトには大切なルールがあります。それは、「来た時よりも美しく」です。たとえ自分が来た時にキャンプ場が汚くなっていたとしても、そしてたとえ汚したのが自分でなかったとしても、綺麗にしてからその場を去る、というルールです。


小さな改善

  • 変数、メソッド名を適切に直す
  • メソッドを共通化する
  • 不要コードを削除する
  • 説明変数を導入する
  • メソッドを private に変更する

プルリク例

pr-1.png


:cop: 増殖を防ぐ


技術的負債は複利で増える

twitter-01.png


:poop: × メンバー数 =
:poop: :poop: :poop: :poop: :poop:


RuboCop でチェック

rubo-logo-horizontal.png


git-grep で雑にチェック

spec/meta/avoid_xss_in_mail_spec.rb
require 'spec_helper'

describe 'Avoid XSS in mail' do
  it 'not include "<%==" in html templates' do
    files = git_grep '<%==', 'app/views/*_mailer/*.html.erb'
    expect(files).to be_empty
  end
end

git-grep で雑にチェック

spec/support/git_grep.rb
module GitGrep
  def git_grep(pattern, *path)
    cmd = "git grep --name-only '#{pattern}'"
    cmd = "#{cmd} -- #{path.join(' ')}" unless path.empty?
    `#{cmd}`.split("\n")
  end
end

RSpec.configure do |config|
  config.include GitGrep
end

まとめ


まとめ

  • :skull: 普通に戦うと死ぬ
    • まずコードを削り、弱体化させる
  • :timer: リファクタリングの工数は取りづらい
    • 機能追加と一緒に、少しずつ直す
  • :sunglasses: 増殖しないような仕組みが必要
    • ペアプロ、レビューなどでもok

ご清聴ありがとうございます

26
26
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
26
26