Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Upgrading Rails? It is a good time to refactor ...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Minqi Pan
April 12, 2014
Programming
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Upgrading Rails? It is a good time to refactor your code
Minqi Pan
April 12, 2014
More Decks by Minqi Pan
See All by Minqi Pan
RubyConf 2017: Packing your Ruby application into a single executable
pmq20
1
760
Node 8 and Friends
pmq20
0
300
Moving Node.js and nodec to v8 Ignition
pmq20
0
420
QCon 2017 Beijing Observations
pmq20
0
350
Node.js Compiler: compiling your Node.js application into a single executable
pmq20
5
25k
Enclose.IO: current cutting-edges and the future work
pmq20
0
320
环境变量为何能让 Ruby 快十倍
pmq20
3
820
Introductions to Node.js internals
pmq20
0
2.2k
How we scaled GitLab for a 30k-employee company
pmq20
6
1.7k
Other Decks in Programming
See All in Programming
Deep dive into the select statement (GopherCon UK)
jespino
0
150
「人を評価する AI」の設計と実装
ryoyanara
0
260
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
170
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
160
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
110
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
740
仕様駆動開発の消費期限
watany
20
9.1k
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
370
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
190
Go 1.27 における memory allocation の高速化
andpad
0
350
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
460
高専、大学編入、そして未踏へ〜プロダクト開発とキャリアの歩み - Technical College, University Transfer, and On to “Mitou” / My Journey in Product Development and Career
pkmiya
0
100
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
530
Statistics for Hackers
jakevdp
799
230k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
500
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
480
Are puppies a ranking factor?
jonoalderson
2
3.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
How to Ace a Technical Interview
jacobian
281
24k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
370
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Transcript
Upgrading�Rails?�It�is�a� good�time�to�refactor� your�code P.S.V.R Powered�by�Rabbit�2.1.2
Rails�4.1�was�released� last�week! 1/39
Why�is�it�a�good�time�to� refactor�your�code?�(1) Trust�me:�if�you�had�time�for� upgrading,�you�would�have�time�for� refactoring 2/39
Why�is�it�a�good�time�to� refactor�your�code?�(2) ���������������������������������������� ������������������������������������������� �������� ������������������������������������������������������������������� some�upgraded�behaviors�require� refactoring�after�all 3/39
Why�is�it�a�good�time�to� refactor�your�code?�(3) ����������������������������������� ��������� ������������������ ��������������������������� �������������������������������� ���������������������������������������������������������� ����������������������������������������������������� You�wan�to�implement�old�functions�via�
new�features 4/39
Roadmap Ⅰ.�Community�Guidelines Ⅱ.�Code�coverage Ⅲ.�Dependencies�updating Ⅳ.�Density�of�Comments Ⅴ.�Cyclomatic�complexity Ⅵ.�Static�code�analyzer Ⅶ.�Commit�messages 5/39
Ⅰ.�Community� Guidelines�(1) ruby-style-guide A�community-driven�Ruby�coding�style� guide https://github.com/bbatsov/ruby-style- guide 6/39
Ⅰ.�Community� Guidelines�(2) ex.�Comments�section 7/39
Ⅰ.�Community� Guidelines�(3) rails-style-guide A�community-driven�Rails�3�&�4�style� guide https://github.com/bbatsov/rails-style- guide 8/39
Ⅰ.�Community� Guidelines�(4) ex.�Routing�section 9/39
Ⅱ.�Code�coverage�(1) simplecov Code�coverage�for�Ruby�1.9+�with�a� powerful�configuration�library�and� automatic�merging�of�coverage�across� test�suites gem�install�simplecov 10/39
Ⅱ.�Code�coverage�(2) 11/39
Ⅱ.�Code�coverage�(3) coveralls.io https://coveralls.io/ gem�ʻcoverallsʼ,�require:�false 12/39
Ⅱ.�Code�coverage�(4) 13/39
Ⅲ.�Dependencies� updating�(1) gemnasium https://gemnasium.com/ 14/39
Ⅲ.�Dependencies� updating�(2) 15/39
Ⅳ.�Density�of� Comments�(1) cf.�http://staff.unak.is/andy/ StaticAnalysis0809/metrics/dc.html 16/39
Ⅳ.�Density�of� Comments�(2) inch Documentation�measurement�tool�for� Ruby,�based�on�YARD. gem�install�inch 17/39
Ⅳ.�Density�of� Comments�(3) 18/39
Ⅳ.�Density�of� Comments�(4) inch-pages https://github.com/rrrene/inch-pages 19/39
Ⅳ.�Density�of� Comments�(5) 20/39
Ⅴ.�Cyclomatic� complexity�(1) developed�by�Thomas�J.�McCabe,�Sr.�in� 1976 For�this�strongly�connected�control� flow�graph,�Cyclomatic�complexity�=�3� is�the�number�of�linearly�independent� cycles�that�exist�in�the�graph,�i.e.�those� cycles�that�do�not�contain�other�cycles� within�themselves.
21/39
Ⅴ.�Cyclomatic� complexity�(2) 22/39
Ⅴ.�Cyclomatic� complexity�(3) ������� ����������� ��� ex.�Cyclomatic�complexity�=�1 23/39
Ⅴ.�Cyclomatic� complexity�(4) ������������������ ������������������������ ��� ex.�Cyclomatic�complexity�=�2 24/39
Ⅴ.�Cyclomatic� complexity�(5) ������������������������������� ��������������������������������������� ��� ex.�Cyclomatic�complexity�=�3 25/39
Ⅴ.�Cyclomatic� complexity�(6) ������������ ���������� ������������������������������� ��������������������������������� ������������������������������������� ����������������������������������� ������������������������������� �����������������������������������
������������������������������� ����� ��� ex.�Cyclomatic�complexity�=�8 26/39
Ⅴ.�Cyclomatic� complexity�(7�-�before) ������������������������ ������������� ��������������������������������������������������������� �������������������������������������� ������������������������������������ ����������������������� ���������������������������������������������� ���������������������
����������������������������� ��������������������������������� ���������������������������������� ���������������������������������������� ��������������������������������� ���������������������������������������������������� ����������������������������������� ����������������������������������� �������������������������������������������������� ������������������������������������������������������������� ���������������������������� ����� ����� ������������� ��� 27/39
Ⅴ.�Cyclomatic� complexity�(8�-�after) ������������������������������������������������������ ������������������������ �������������������������������������������������������� �������������������� �������������������������������������������� ��� 28/39
Ⅴ.�Cyclomatic� complexity�(9�-�after) ���������������� ������������������� ��������������������������� ������������������������������������������������������������� �������������������������������� �������������������������������������� �������������������������������������������������������������������������� ���������������������������������
������������������������������������������������������������ ��� ������ ��� 29/39
Ⅵ.�Static�code�analyzer� (1) rubocop gem�install�rubocop rubocop�-R�>�rubocop.txt 30/39
Ⅵ.�Static�code�analyzer� (2) 31/39
Ⅵ.�Static�code�analyzer� (3) codeclimate https://codeclimate.com/ 32/39
Ⅵ.�Static�code�analyzer� (4) 33/39
Ⅶ.�Commit�messages� (1) good�commit�message�example 34/39
Ⅶ.�Commit�messages� (2) bad�commit�message�examples 35/39
Ⅶ.�Commit�messages� (3) bad�commit�message�examples 36/39
Ⅶ.�Commit�messages� (4) bad�commit�message�examples 37/39
How�to�write�good� commit�messages? Use�English Use�the�imperative,�present�tense:� “change”,�not�“changed”�or�“changes”;� “Fix�bug#1234”�is�better�than�“Fixed� bug�#1234” Use�50-char�title�and�Use�72-character� columns�for�word-wrapping. Read�more:�https://github.com/
torvalds/linux/ pull/17#issuecomment-5654674 38/39
Download�the�slides https://github.com/pmq20 39/39 Powered�by�Rabbit�2.1.2