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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Minqi Pan
April 12, 2014
Programming
220
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
790
Node 8 and Friends
pmq20
0
320
Moving Node.js and nodec to v8 Ignition
pmq20
0
430
QCon 2017 Beijing Observations
pmq20
0
360
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
340
环境变量为何能让 Ruby 快十倍
pmq20
3
840
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
Spec-driven Development with AI
simas
PRO
0
2.3k
AI駆動開発4年目の現在地(『あなたはFDEになるべきか?』イベント資料)
kumaiu
0
310
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
330
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
290
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
170
Railsバージョンを4倍にした話
optim
0
960
オーケストレーション記述言語 Katari
yukikurage
0
240
Crash Auto Pipelines
veronikapj
1
390
TS 7.0 で baseUrl が使えなくなった今、パスエイリアスをどうするか
bicstone
2
560
Будущее локальных LLM – Алексей Голобурдин, PythoNN
sobolevn
0
110
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
150
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
140
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
600
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
480
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
480
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
450
Facilitating Awesome Meetings
lara
57
7.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The Curse of the Amulet
leimatthew05
3
17k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
610
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.8k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
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