Стиль програмування на Ruby для початківців і не тільки

Зараз в мережі можна зустріти досить багато інструкцій по стилізації коду під ту чи іншу мову програмування. Це важливо для полегшення розуміння коду у майбутньому, та зменшує муки того, хто буде використовувати цей код після вас :))
Ніхто вас не змушує слідкувати цим правилам, але стандартизація коду має позитивні моменти для всіх.

Форматування

1.Використовуйте ASCII (або UTF-8, якщо це необхідно)
2.Використовуйте для відступів два пробіли, замість табуляції.
3.Вставляйте пробіли навколо операторів, після коми, після символів двокрапки і крапки з комою, навколо { і перед }
4.Не вставляйте пробілів після дужок ( та [ і перед дужками ) і ]
5.Вставляйте два пробіли перед модифікаторами if/unless/while/until/rescue які використовуються в кінці рядка.
6.Виділяйте when таким же відступом, як і case.
7.Вставляйте пустий рядок перед повертанням значення (якщо метод складається не з одного рядка) і перед def.
8.Використовуйте Rdoc та її конвенції для документування API. Не вставляйте пустого рядка між блоком коментаря та def.
9.Використовуйте пустий рядок, щоб розбити довгий метод на параграфи.
10.Використовуйте рядки коротші за 80 символів.
11.Уникайте пробілів в кінці рядка.

Синтаксис

1.Використовуйте def з дужками, якщо метод приймає аргументи.
2.Уникайте по можливості for, якщо тільки ви не впевнені стовідсотково навіщо вам використовувати саме for.
3.Використовуйте When x;… для однорядкових case.
4.Використовуйте &&|| для логічних виразів and/or для контролю ходу виконання.
5.Опускайте дужки при виклиці методів, але використовуйте їх, якщо ви викликаєте функції.
6.Вибирайте {} замість do...end.
7.Опускайте return там, де він не потрібен.
8.Опускайте продовження рядка \ там, де він не потрібен.
9.Використання значення, яке повертає метод = допускається: of v = array.grep(/foo/)…
10.Використовуйте ||=
11.Використовуйте не-ОО регулярні вирази: =~, $0-$9, $~, $`.

Іменування

1.Використовуйте snake_case (слова з маленької літери, розділені підкреслюванням) для найменування методів.
2.Використовуйте CamelCase (слова з великої літери, записані разом) для найменування класів та модулів.
3.Використовуйте SCREAMING_SNAME_CASE (слова, написані великими літерами, розділені підкреслюванням) для констант.
4.Довжина імені має якби вказувати на область дії об'єкту. Використовуйте однобуквенні імена для параметрів коротких блоків/методів згідно цієї схеми:
abc: любий об'єкт
d: назва директорії
e: елемент Enumerable типу
ex: оброблюване виключення (Exception)
f: файли та імена файлів
i,j: індекси
k: ключв хеші
m: метод
o: любий об'єект
r: повертаєме значення короткого методу
s: strings
v: любе значення
x,y,z: числа.
5.Використовуйте map замість collect, find замість detect, find_all замість select.

Коментарі

1.Коментарі, які довші одного слова повинні починатися з великої літери та мати пунктуацію. Вставляйте два пробіли після кожної коми.
2.Старайтеся не використовувати занадто багато коментарів.

Інші поради можна почитати тут.
  • +5
  • 09 березня 2010, 20:13
  • theasus

Коментарі (5)

RSS згорнути / розгорнути
+
0
Не завадилом приклад гарного стилю навести.
avatar

whitemystyle

  • 09 березня 2010, 20:16
+
0
На сторінці документації Ruby вистачає прикладів)
avatar

theasus

  • 09 березня 2010, 20:18
+
0
тож на сторінці)
avatar

whitemystyle

  • 09 березня 2010, 20:19
+
+1
> 6.Вибирайте {} замість do...end.
Я використовую {} коли одна стрічка і do...end коли декілька(не пам’ятаю де це я вичитав, але вважаю, що так зручніше)

Не так давно thoughtbot проводили опитування серед рубістів, щодо форматування та інших аспектів написання програм, рекомендую ознайомитися з результатами.
avatar

enej

  • 09 березня 2010, 21:07
+
+2
Приблизно дотримуюсь такого стилю.
ще чомусь полюбляю конструкцію:
(умова) ? (істина) : (хибно)
для коротких виразів

Кодування вказую зверху файлу:
# -*- encoding: utf-8 -*-
avatar

mamantoha

  • 10 березня 2010, 12:01

Тільки зареєстровані й авторизовані користувачі можуть залишати коментарі.