Angular js best practice

44
AngularJs Best Practice for Enterprise development and distributed Teams #angularconf15

Transcript of Angular js best practice

Page 1: Angular js best practice

AngularJs Best Practice

for Enterprise development anddistributed Teams

#angularconf15

Page 2: Angular js best practice

MatteoScandolo

FE Developer

Team Leader

Code Quality and Maintainability

@_teone

Page 3: Angular js best practice

Enterprise?

for Enterprise development …

bigcomplex

fluid teams

multiple developers

system integrations

Page 4: Angular js best practice

Distributed?

… distributed Teams

communication delays

Page 5: Angular js best practice

10 rulesto improve your Angular project

#angularconf15

Page 6: Angular js best practice

#1Planning

- Constraints- Technical Choices- Application Architecture

- Modules- Shared Method- Dependencies

- Guidelines- Tooling

Page 7: Angular js best practice

Immagine dello schema di un progetto

Page 8: Angular js best practice

Npm Scripts

Page 9: Angular js best practice

#2Setup

README.md

- Dev Environment- Deploy- Tests- Styleguide*- Environment Configurations*- Documentation*- Contributors*

Page 10: Angular js best practice

#3Styleguide

Force devs to write similar code

- Js styleguide- Air Bnb

- Angular Styleguide- Jhon Papa

with a styleguide

with no styleguideDev Speed

Page 11: Angular js best practice

ES Lint

Pluggable linting utility

- Configurable (Json, Yml)- Pluggable (as npm packages)- Extendable

- custom rules- yeoman generator

Page 12: Angular js best practice

ES Lint

Page 13: Angular js best practice

ES Lint

Page 14: Angular js best practice

Force

Page 15: Angular js best practice

#4Tests

Why are they so important?

- Prevent regressions- Reduce Bugs- Code enhancement- Document features

Page 16: Angular js best practice

Karma + Jasmine

Karma- Test Runner

Jasmine- Assetion Library

PhantomJs- Headless browser

Page 17: Angular js best practice

The Old Way...

Page 18: Angular js best practice

The Clean Way

Page 19: Angular js best practice

#5Documentation

Not talking about high-level documentation

Technical Docs

- List all available methods- Teach how to use them- Specify parameter type- Provide Examples- Can do more?

Page 20: Angular js best practice

REST API

Build a representation

of your restfull API

- Interactive documentation- Client SDK generation

Page 21: Angular js best practice

REST API

Page 22: Angular js best practice

REST API

Page 23: Angular js best practice

REST API

Page 25: Angular js best practice

NG DOC

ngDoc

- Extend jsDoc- Browsable Documentation

- Describe the app API- Provide usage examples

Page 26: Angular js best practice

NG DOC

What can we describe:- Docs template (@ngdoc)- Name- Belongings (@methodOf)- Description- Params- Return- Angular Specific Attribute

- @restrict

Page 27: Angular js best practice

NG DOC

Page 28: Angular js best practice

PARAMETER TYPES...

Page 29: Angular js best practice

#6Code Quality

Automate Code Quality Check

- Dependencies Status- Duplicated Code- Complex Function- Error Handling- Lint Status- Test Coverage

Page 30: Angular js best practice

BITHOUND.IO

Software insight as a service

Free for OS project

Page 31: Angular js best practice

BITHOUND.IO

Page 32: Angular js best practice

BITHOUND.IO

Page 33: Angular js best practice

KARMA COVERAGE

Karma Coverage Plugin- Easy to set up- Generate different format

Page 34: Angular js best practice

Usage

Page 35: Angular js best practice

#7ContinuousIntegration

Why?

- Automate the process- Error reduction- Generate reports- 1 click (or no-click deploy)

Page 36: Angular js best practice

Tools

Travis CI Jenkins CI Strider CD

Page 37: Angular js best practice

Tools

Page 38: Angular js best practice

#8Development

Workflow

Git Flow

- Stable branch with released version- Stable branch with new features- Shared Standard

Page 39: Angular js best practice

How dows it work...

GIT FLOW: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

Master

Develop

Feature Branch

Release Branch

HotFix Branch

Page 40: Angular js best practice

Tools...

Page 41: Angular js best practice

#9Team

Communication

SLACK- Issues- Snippets- Usefull Link- Dependencies Docs- Real Time Notification

Page 42: Angular js best practice

Tools...

Page 43: Angular js best practice

#10Ask yourself..

If I leave tomorrow…

… and someone have to work on this project …

Will I like to be that guy?

Page 44: Angular js best practice

Thanks!@_teone

#angularconf15