Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
26
Help us understand the problem. What is going on with this article?
@sinsoku

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

More than 3 years have passed since last update.

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

by sinsoku
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
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
sinsoku

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
26
Help us understand the problem. What is going on with this article?