Javascript Style Guide

These rules apply to pure JS, as well as JSA inside of Polymer. Follow the Google Style Guide as a baseline, except as follows below.

  • We don't use the Closure Compiler or any type comments related to it.
  • Use double quotes.
  • We support only the “Evergreen Browsers”. IE 9 and below are not supported.

Polymer Style Guide

As a baseline, be consistent with standard Polymer style as used by Polymer elements themselves. Some exceptions and clarifications are listed below.

AJAX requests

Instead of <iron-ajax>, prefer using the family of sk.request methods, found in common.js

Rationale: It is easier to debug procedural code over the declarative element. iron-ajax requires looking between template and the JS in the element declaration, which is sometimes a lot of scrolling. It is easier to read when the logic is all in one place. Some legacy code may use iron-ajax, but do not follow that example.

Behaviors

Behaviors should exist one per file, with the file name ending in “-behaviors.html”. If a Behavior is not used by any templating logic, consider implementing the logic in pure JS, using a namespace as appropriate.

Rationale: If methods are not used for templating, pure JS is more portable.

Elements

Elements should exist one per file, with the file name being the same as the element. If an Element has a helper element that should not be used alone, it may be included in the same file. Example: details-summary.html

Naming Things

Properties should be named using one word (if possible) or using snake_case. Private properties and methods should be prefixed with an underscore (e.g. _super_private).

Rationale: The names are consistent in Javascript and HTML land. Polymer will automatically convert camelCase into sausage-case otherwise, which leads to hilarity and/or tears.

Python Style Guide

Python code follows the Google Python Style Guide.