Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Upgrading Rails? It is a good time to refactor ...
Search
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
770
Node 8 and Friends
pmq20
0
310
Moving Node.js and nodec to v8 Ignition
pmq20
0
430
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
330
环境变量为何能让 Ruby 快十倍
pmq20
3
830
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
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
230
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
330
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
430
Webの地図
yosuke_furukawa
PRO
6
5k
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
570
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
600
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
120
AWSに止められる覚悟してますか?
morizo_1984
2
500
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
130
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
290
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
330
Featured
See All Featured
From π to Pie charts
rasagy
1
380
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
270
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
530
The Cult of Friendly URLs
andyhume
79
7k
Documentation Writing (for coders)
carmenintech
77
5.6k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Mind Mapping
helmedeiros
1
390
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