Code Style Guides

Общие рекомендации

  1. Работая с кодом, стремитесь повышать его качество. Если быстрый фикс ухудшает качество кода, запланируйте рефакторинг.
  2. Помните, ваш код должен быть понятен не только вам, но и коллегам. Красота скрывается в простоте.
  3. Предпочитайте композицию вместо наследования.
  4. Остерегайтесь сразу создавать переиспользуемые компоненты (Reusable components)]. Лишний слой абстрации переусложнит его использование сейчас.

JavaScript

Придерживаемся стиля в зависомости от фреймворка:

В проекте включаем Prettier, TSLint и конфиг tslint-config-airbnb

Для автоматической проверки кода, добавьте в package.json:

"scripts": {
  ...
  "precommit": "lint-staged",
  }
...  
"lint-staged": {
    "{src,test}/**/*.ts*": [
      "prettier --write",
      "git add"
    ]
  },

PHP

Следуем соглашению PSR-2 с некоторыми особенностями:

  1. Имена приватных переменных класса пишем с подчеркиванием private $_somePrivateVar;.
  2. Имена приватных методов пишем с подчеркиванием private function _somePrivateMethod() {}.

Файл phpcs.xml для PHP_CodeSniffer:

<?xml version="1.0"?>
<ruleset name="PSR2C">
    <rule ref="PSR2"/>
    <arg name="colors"/>
    <description>Apliteni Coding Standard</description>
    <exclude-pattern>vendor/*</exclude-pattern>

    <rule ref="PSR2.Methods.MethodDeclaration.Underscore">
        <type>warning</type>
    </rule>
    <rule ref="PSR2.Classes.PropertyDeclaration.Underscore">
        <type>warning</type>
    </rule>
	<rule ref="PSR1.Methods.CamelCapsMethodName">
        <exclude-pattern>tests/*</exclude-pattern>
    </rule>
</ruleset>

Ruby

A community-driven Ruby coding style guide.

Golang

Для автоматической проверки кода ставим golint.

Shell

Google Shell Style Guide.

Makefile

  1. Имя make-файлов Makefile.
  2. Имя таргетов через минус. Например, run-tests.
  3. Переменные окружения пишем в верхнем регистре. Пример, PROJECT_PATH
  4. Локальные переменные в нижнем с разделителем _. Пример, build_dir = $(PROJECT_PATH)/build
  5. Определения Phony targets пишем после самого таргета, вместо опредения в одном месте:

Правильно:

all: build test
.PHONY: all

Неправильно:

.PHONY: all build test
all: build test

CoffeeScript

CoffeeScript Style Guide

Книги

  1. A Philosophy of Software Design