SlideShare a Scribd company logo
Refactoring
Web Interfaces
@JINA // DEVCONFU // JŪRMALA // 2014
@jina
Senior Product Designer
— PAUL SAFFO
“It used to be that designers made an object
and walked away. Today the emphasis must
shift to designing the entire life cycle.”
What is
refactoring?
Refactoring:
GETTING RID OF CODE SMELLS?
— SOME LIAR
“I always code perfectly
the first time.”
lack of clarity
confusion
no maintainability
inefficiency
duplication
bloat
Refactoring:
BUSY WORK?
Refactoring:
CHANGE THE STRUCTURE OF EXISTING CODE WITHOUT
CHANGING THE BEHAVIOR OF THAT CODE
My first large
major CSS refactor:
2007–2008 // Apple Online Store
old styles // legacy CSS
new styles // basic font sizes, colors, & fonts
typography // basic font sizes, colors, & fonts
layout // grid, borders, backgrounds
overrides // temporary overrides for old styles
local styles // localization
context styles // styles for stores for b2b, education, etc.
Too bad I wasn’t
using Sass then…
Jina bolton - Refactoring Web Interfaces
2010–2011 // AppCloud
Nesting
USE (CAREFULLY) TO AVOID REPETITION
If you’re nesting more than
3 levels deep, you’re probably
doing something wrong.
Variables
STORE COMMON ATTRIBUTES FOR MAINTAINABILITY
Mixins
STORE REUSABLE CODE & PASS ARGUMENTS FOR OVERRIDES
@mixin mod($txt: #ccc) {
background: #111;
color: $txt;
}
body { @include mod; }
h1 { @include mod(#888); }
body {
background: #111;
color: #ccc;
}
h1 {
background: #111;
color: #888888;
}
SCSS Output
@extend
CHAIN SELECTORS TOGETHER
.message {
padding: 1em;
a { color: #369; }
}
.error {
@extend .message;
color: #eee;
}
.message, .error {
padding: 1em;
}
.message a, .error a {
color: #369;
}
.error {
color: #eee;
}
SCSS Output
Placeholder
Selectors
CREATE SILENT CLASSES FOR @EXTEND
%grid-1 { width: 240px; }
%grid-2 { width: 480px; }
.content {
@extend %grid-1;
color: #369;
}
.main {
@extend %grid-1;
background: #eee;
}
.content, .main {
width: 240px;
}
.content {
color: #369;
}
.main {
background: #eee;
}
SCSS Output
ZOMG!
Refactoring, Sass,
& Style Guides are
awesome together!
Engine Yard App Cloud Style Guide, Early 2011
blog.engineyard.com/2011/front-end-maintainability-with-sass-and-style-guides
2012–2013 // Web App & Web Site
Make Refactoring
a regular part of
your workflow.
01 //
Don’t try to refactor
everything at once.
YOU’LL LIKELY GIVE UP.
Refactor
going forward.
Making
something new?
Document it.
Revising something?
Refactor it.
Then document it.
If code style preferences
are agreed upon,
document it.
Do you have a
CSS Gatekeeper?
Document
your ideal CSS
Architecture.
02 //
smacss.com
Do Web App “Deathstar”
Do Website “Kenobi”
deathstar.sass kenobi.sass
deathstar.sass kenobi.sass
deathstar.sass kenobi.sass
deathstar.sass kenobi.sass
deathstar.sass kenobi.sass
vendor // third party libraries
@import compass
@import susy
@import breakpoint
vendor/_shared.sass
compass-style.org
susy.oddbird.net
breakpoint-sass.com
// ------------------------
// VENDOR
@import vendor/shared
@import bootstrap/variables
@import bootstrap/mixins
// ------------------------
// VENDOR
@import vendor/shared
deathstar.sass kenobi.sass
vendor
dependencies // Global variables, mixins, & functions
@import color
@import type
@import layout
dependencies/_shared.sass
// ---------------------------------------
// DEPENDENCIES
@import dependencies/shared
@import dependencies/deathstar/themes
@import dependencies/deathstar/animations
// ---------------------------------------
// DEPENDENCIES
@import dependencies/shared
@import dependencies/kenobi/themes
deathstar.sass kenobi.sass
vendor
dependencies
base // Plain old semantic HTML
@include border-box-sizing
@import vendor/normalize
@import type
@import lists
@import tables
base/_shared.sass
// -----------------------
// BASE
@import base/shared
// -----------------------
// BASE
@import base/shared
@import base/kenobi/fonts
deathstar.sass kenobi.sass
vendor
dependencies
base
components // Modular components & states
@import icons
@import forms
@import buttons
@import toggles
@import messages
components/_shared.sass
// --------------------------------
// COMPONENTS
@import components/shared
@import components/deathstar/modals
// --------------------------------
// COMPONENTS
@import components/shared
deathstar.sass kenobi.sass
vendor
dependencies
base
components
regions // Divided page regions
// ------------------------------------
// REGIONS
@import regions/deathstar/banner
@import regions/deathstar/navigation
// ------------------------------------
// REGIONS
@import regions/kenobi/banner
@import regions/kenobi/complementary
@import regions/kenobi/contentinfo
deathstar.sass kenobi.sass
vendor
dependencies
base
components
regions
helpers // Layout helpers
@import layout-float
@import layout-display-table
@import visibility
helpers/_shared.sass
// --------------------------------
// HELPERS
@import helpers/shared
@import helpers/deathstar/sprites
// --------------------------------
// HELPERS
@import helpers/shared
deathstar.sass kenobi.sass
vendor
dependencies
base
components
regions
helpers
responsive // Adjustments to type & spacing
// --------------------------------
// RESPONSIVE
@import responsive/deathstar/mobile
@import responsive/deathstar/tablet
@import responsive/deathstar/screen
@import responsive/deathstar/retina
@import responsive/print
// --------------------------------
// RESPONSIVE
@import responsive/kenobi/mobile
@import responsive/kenobi/tablet
@import responsive/kenobi/screen
@import responsive/kenobi/retina
@import responsive/print
deathstar.sass kenobi.sass
_buttons.sass _screen.sass
_forms.sass
_modals.sass
vendor
dependencies
base
components
regions
helpers
responsive
tools // Visible grids & diagnostics
@import show-grid
@import diagnostics
tools/_shared.sass
<% if Rails.env.development? && Settings.show_grids %>
@import show-grid
@import diagnostics
<% end %>
tools/_shared.sass.erb
vendor/
dependencies/
base/
components/
regions/
helpers/
responsive/
tools/
}
PUT NEW CSS IN ITS PLACE
MOVE OLD CSS AS YOU GET TO
IT IN REVISIONS
MOVE MORE WHEN YOU
HAVE TIME TO WORK ON
TECH DEBT
Refactor when you’re adding something new.
Refactor when you’re fixing an issue.
Refactor during issues come up in code reviews.
Keep commits
focused & organized.
03 //
Bigger commits
lazy reviews
If you see something you want to fix that is
not within the scope of the current commit,
take note, and fix it in a new commit.
To debug, inspect at the
inner-most element
then work outward.
Find in Project (or GREP)
to determine if what you’re
editing is used anywhere else.
Check how your commit
affects the style guide.
Not in a style guide?
Put it in one!
Color
MAINTAINABILITY WITH SASS
Use your Sass Variables to
generate a living color
palette in your Style Guide.
Create a simple
color palette. Use
Sass to do variations.
$x: #369;
$y: #fff;
.a { color: lighten($x, 5%); }
.b { color: darken($x, 5%); }
.c { color: saturate($x, 5%); }
.d { color: grayscale($x ); }
.e { color: mix($x, $y); }
Just a few things Sass can do to your colors.
Make Variables for common
pairings of color & Sass
functions, and document it.
$black: #000;
$grey: #eee;
$white: invert($black);
$h-bg-color: $black;
$h-text-color: $grey;
$h-link-color: $white;
_colors.scss _header.scss
sassme.arc90.com
Make Mixins for common
pairings of backgrounds,
text colors, & shadow colors.
Typography:
CREATE A SMART SYSTEM & START MOVING TOWARD IT.
Choose a standard
base unit.
4 IS A GOOD BASE… IT MULTIPLIES INTO 8, 12, 16, ETC.
Create Mixins for
common type styles.
SPACED OUT CAPS, BIG QUOTE STYLES…
BUT DON’T HAVE TOO MANY. AND DOCUMENT THEM!
Don’t try to refactor
everything at once.
YOU’LL LIKELY GIVE UP.
Refactor
going forward.
— GUSTAVE FLAUBERT
“Be regular and orderly in your
life so that you may be violent
and original in your work.”
sfdc-styleguide.herokuapp.com
@SalesforceUX
dribbble.com/salesforce
sass-lang.com
@TeamSassDesign
dribbble.com/TeamSassDesign
themixinsf.com
susy.oddbird.net
T W I T T E R , D R I B B B L E , I N STAG RA M , & G I T H U B
@jina

More Related Content

PDF
Lessons learnt from the FontShop site relaunch
PPT
An Introduction to CSS Preprocessors (SASS & LESS)
PDF
CSS 開發加速指南-Sass & Compass
PDF
Sass & bootstrap
PPTX
Introduction to SASS
KEY
Authoring Stylesheets with Compass & Sass
PDF
Introduction to Bazaar
PDF
(Web ) Typography
Lessons learnt from the FontShop site relaunch
An Introduction to CSS Preprocessors (SASS & LESS)
CSS 開發加速指南-Sass & Compass
Sass & bootstrap
Introduction to SASS
Authoring Stylesheets with Compass & Sass
Introduction to Bazaar
(Web ) Typography

Viewers also liked (6)

PDF
Jina Bolton - in the search of the single source of truth
PDF
UI Realigning & Refactoring by Jina Bolton
PDF
Jina Bolton
PDF
Under the influence: Dark patterns & the power of persuasive design
PPTX
The researcher’s blind spot: 6 cognitive biases we shouldn’t ignore in research
PDF
Designers are from Mars, BAs are from Venus
Jina Bolton - in the search of the single source of truth
UI Realigning & Refactoring by Jina Bolton
Jina Bolton
Under the influence: Dark patterns & the power of persuasive design
The researcher’s blind spot: 6 cognitive biases we shouldn’t ignore in research
Designers are from Mars, BAs are from Venus
Ad

Similar to Jina bolton - Refactoring Web Interfaces (20)

PPTX
SASS is more than LESS
PPTX
SCSS Implementation
PDF
Sass that CSS
PPTX
Arunan Skanthan - Roll Your own Style Guide
PDF
SASS, Compass, Gulp, Greensock
PPTX
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
KEY
Bringing sexy back to CSS: SASS/SCSS, LESS and Compass
KEY
Advanced sass/compass
PPTX
Introduction to sass
PDF
A complete html and css guidelines for beginners
KEY
Sass: The Future of Stylesheets
PDF
Creating Living Style Guides to Improve Performance
PDF
PDF
PechaKucha Less VS Sass
PDF
A better CSS: Sass and Less - CC FE & UX
PDF
CSS Workflow. Pre & Post
PDF
SASS: The Next Wave in Styling and Theming
PPTX
Revamp Your Stylesheet
PDF
Css preprocessor-140606115334-phpapp01
PDF
CSS preprocessor: why and how
SASS is more than LESS
SCSS Implementation
Sass that CSS
Arunan Skanthan - Roll Your own Style Guide
SASS, Compass, Gulp, Greensock
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
Bringing sexy back to CSS: SASS/SCSS, LESS and Compass
Advanced sass/compass
Introduction to sass
A complete html and css guidelines for beginners
Sass: The Future of Stylesheets
Creating Living Style Guides to Improve Performance
PechaKucha Less VS Sass
A better CSS: Sass and Less - CC FE & UX
CSS Workflow. Pre & Post
SASS: The Next Wave in Styling and Theming
Revamp Your Stylesheet
Css preprocessor-140606115334-phpapp01
CSS preprocessor: why and how
Ad

More from DevConFu (20)

PDF
Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...
PDF
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
PDF
Gojko Adzic - Taking the business on the journey - ConFu
PPTX
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFu
PDF
Hanno Jarvet - VSM, Planning and Problem Solving - ConFu
PDF
Andrey Adamovich - Enterprise flight into DevOps space - ConFu
PDF
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem Solving
PDF
Didzis Balodis - Web application security – war stories from real penetration...
PDF
Ivan Gaydamakin and Juri Tishko - ​3D Printing (workshop)
PDF
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3D
PPTX
Marion de Groot - Scrum and Specs
PDF
Allan Kelly - Dialogue Sheets for retrospectives and discussion
PDF
Robert Virkus - Playing with LEGO Mindstorms from your Mobile Phone
PPTX
Eduards Sizovs - Micro Service Architecture
ODP
Misha Beshkin - How to organize execution of tests on real Android devices
PDF
Jon Arne Sæterås - Give Responsive Design a mobile performance boost
PDF
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
PDF
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
PDF
Allan Kelly - Do it right, then do the right thing
PDF
Filipp Keks - Unity3D
Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Gojko Adzic - Taking the business on the journey - ConFu
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFu
Hanno Jarvet - VSM, Planning and Problem Solving - ConFu
Andrey Adamovich - Enterprise flight into DevOps space - ConFu
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem Solving
Didzis Balodis - Web application security – war stories from real penetration...
Ivan Gaydamakin and Juri Tishko - ​3D Printing (workshop)
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3D
Marion de Groot - Scrum and Specs
Allan Kelly - Dialogue Sheets for retrospectives and discussion
Robert Virkus - Playing with LEGO Mindstorms from your Mobile Phone
Eduards Sizovs - Micro Service Architecture
Misha Beshkin - How to organize execution of tests on real Android devices
Jon Arne Sæterås - Give Responsive Design a mobile performance boost
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
Allan Kelly - Do it right, then do the right thing
Filipp Keks - Unity3D

Recently uploaded (20)

PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
Online Work Permit System for Fast Permit Processing
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
top salesforce developer skills in 2025.pdf
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
history of c programming in notes for students .pptx
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPT
Introduction Database Management System for Course Database
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Understanding Forklifts - TECH EHS Solution
PPTX
Transform Your Business with a Software ERP System
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
System and Network Administration Chapter 2
PDF
AI in Product Development-omnex systems
How Creative Agencies Leverage Project Management Software.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Design an Analysis of Algorithms II-SECS-1021-03
Online Work Permit System for Fast Permit Processing
CHAPTER 2 - PM Management and IT Context
Which alternative to Crystal Reports is best for small or large businesses.pdf
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
ManageIQ - Sprint 268 Review - Slide Deck
top salesforce developer skills in 2025.pdf
Odoo POS Development Services by CandidRoot Solutions
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
history of c programming in notes for students .pptx
Design an Analysis of Algorithms I-SECS-1021-03
Introduction Database Management System for Course Database
PTS Company Brochure 2025 (1).pdf.......
Understanding Forklifts - TECH EHS Solution
Transform Your Business with a Software ERP System
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
System and Network Administration Chapter 2
AI in Product Development-omnex systems

Jina bolton - Refactoring Web Interfaces