Перехід на Ruby з Java
Java — зріла. Перевірена. І швидка (всупереч твердженням анти‑Java табору). Водночас вона доволі багатослівна. Переходячи з Java на Ruby, очікуйте суттєвого скорочення коду. Також можна очікувати, що швидкі прототипи створюватимуться швидше.
Подібності
Як і в Java, у Ruby…
- Пам’ять керується збирачем сміття.
- Об’єкти мають строгі типи.
- Є методи public, private і protected.
- Є вбудовані інструменти документації (у Ruby це RDoc). Документація, згенерована rdoc, дуже схожа на ту, що створюється javadoc.
Відмінності
На відміну від Java, у Ruby…
- Вам не потрібно компілювати код. Ви просто запускаєте його.
- Є кілька популярних сторонніх GUI-наборів. Користувачі Ruby можуть спробувати WxRuby, FXRuby, Ruby-GNOME2, Qt або Ruby Tk.
- Ви використовуєте ключове слово
endпісля визначення таких речей, як класи, замість обгортання блоків коду фігурними дужками. - Ви використовуєте
requireзамістьimport. - Усі змінні-члени приватні. Ззовні доступ здійснюється через методи.
- Дужки у викликах методів зазвичай необов’язкові і часто опускаються.
- Усе є об’єктом, включно з числами, як-от 2 і 3.14159.
- Немає статичної перевірки типів.
- Імена змінних — це лише мітки. Вони не мають пов’язаного типу.
- Немає оголошень типів. Ви просто присвоюєте значення новим змінним за
потреби, і вони “з’являються” (тобто
a = [1,2,3]замістьint[] a = {1,2,3};). - Немає кастингу. Просто викликайте методи. Ваші юніт-тести повинні повідомити вам ще до виконання коду, якщо ви побачите виняток.
- Це
foo = Foo.new("hi")замістьFoo foo = new Foo("hi"). - Конструктор завжди називається “initialize”, а не як назва класу.
- Є “міксини” замість інтерфейсів.
- YAML зазвичай надається перевага над XML.
- Це
nilзамістьnull. ==іequals()працюють у Ruby по-іншому. Використовуйте==, коли хочете перевірити еквівалентність у Ruby (equals()у Java). Використовуйтеequal?()коли хочете дізнатися, чи це той самий об’єкт (==у Java).