Pull to refresh

Comments 30

Как-то Сисадмин спросил:
– Учитель, не желаете ли красивую картинку для вашего десктопа? У меня есть коллекция «обоев для рабочего стола» со звёздным небом и моральным законом.
– Почему ты думаешь, что мой нынешний «wallpaper» хуже? – спросил в ответ Инь Фу Во.
– Я не знаю, какая у вас картинка сейчас. Я никогда не видел вашего десктопа. У вас всегда открыто множество окон.
– Я тоже его никогда не видел, – сказал почтенный Инь. – Я работаю.
Прошу простить, но для человека, не знакомого с ruby, код выглядит страшно. Нельзя ли его сделать более приятным на глаз?
Но это Ruby, он просто такой. Я понятия не имею как его можно сделать более приятным для глаз. Может кто-нибудь подскажет?
Подскажет.
Не надо писать всё в одну строчку.
И ещё, вот это:

attr_accessor :window
attr_accessor :tags
attr_accessor :size
attr_accessor :number
attr_accessor :saveInto
attr_accessor :startButton
attr_accessor :output
attr_accessor :downprogress
attr_accessor :downloader
attr_accessor :img

Ужас… Можно один раз написать attr_accessor, а потом перечислить какие…
Ну это дело вкуса и стиля, мне например больше по душе когда они на отдельных строчках
Можно в отдельных строчках, перечисляя через запятую. Просто надо attr_accessor один раз написать.
Потому что это написано в C-подобном стиле. Рубями тут и не пахнет.
Примеры бы не помешали?
github.com/troydm/AnimeWallpaperDownloader/pull/1
Я, следуя порыву, начал рефакторить, но сумел вовремя остановиться.
Для более глубокого рефакторинга надо смотреть, что там за страницы оно отдаёт и т.д.

Примеры:
1. В руби стандартом являются отступы в 2 пробела (styleguide)
2. Неплохо было бы вычищать лишние пробелы — это очень портит диффы.
3. Имена переменных это главный фейл. Ещё в школе по-моему рассказывают, что называть переменные «a, b, c» — это плохо.
4. Повторяющийся код надо извлекать в соответствующие методы.
5. Меня смущают счётчики и метод, которым парсятся страницы, но по этому поводу я ничего не могу сказать конкретного, надо вникать в то, как работает приложение.
7. Зачем там хеши нужны я так и не понял. Заменил на массивы.
8. Ну и прочие C-измы. То есть приложение написано в обычном процедурном стиле как это делается в C, без использования всех возможностей ruby.

Ну в общем рад, если помог. :)
Могу вам посоветовать книгу Eloquent Ruby. Там сделан основной акцент как стилистически правильно писать на Руби.
Всё собиралься её почитать никак руки не дошли, спасибо обьязательно почитаю
Усложнять всё это (nokorogi надо ещё запаковывать) и трать много времени не хотелось так как там несколько моментов где нужно запарсить html и достаточно стандартных средств Ruby
www.macruby.org/trac/ticket/810

Никак паковать не надо в app, зачем? Или все библиотеки линкуемые вы тоже всегда к приложению прикладываете? :) Надо это написать в prerequisites или в самом скрипте сделать проверку, что б ежели что отсутствует — выдавал полный список требуемых гемов и инструкции по установке.
Я не думаю что простые рядовые пользователи умеют устанавливать gem-ы. Счаз там ничего кроме MacRuby не нужно. Eго устанавливать не сложно. Простой установщик. Я потом разберусь как его вообще вместе с .app поставлять чтоб пользователи не морочились c установкой MacRuby вообще. Это же десктопное приложение всё таки
Внимание, вопрос. А зачем вы вообще тогда взялись на MacRuby писать?! Не лучше ли на нативном Obj-C? По времени вышло бы столько же, задача тривиальная благо. И никаких бы проблем не было.
Исходя из первого абзаца, просто интересно было разобраться в MacRuby
Вы явно пытаетесь решать или не ту задачу, или не теми средствами.

Если вы хотите, что бы приложение было standalone и требовало минимум усилий по установке в порыве заботы о «рядовых пользователях» — пишите на Obj-C. Иначе это скоро кончится тем, что вы и сам macRuby прилинкуете жестко и положите в пэкэдж, а то вдруг выйдет новая версия, и ваш код окажется работать без какого-нибудь небольшого фикса. Такие случаи медицине известны.

Отказ от велосипедов и массированное использование гемов — один из столпов руби, сама идея жестко их линковать выглядит противоестественной, о чем тут и намекнули. Установка гемов проста как никогда, для этого люди приложили много усилий. Если беспокоят какие-то сложности — напишите установочный шелл-скрипт, он может все разруливать очень умным образом. И если вы пойдете этим путем, то образовательный эффект будет гораздо больше.
Добавил standalone версию которая ничего не требует при установке (содержит MacRuby внутри) так что это теперь рядовые пользователи могут просто скачать её и пользоваться программой
Нет, ну я же правда иронизировал, я в этом не виноват. Жесть какая… )
nokogiri использует C-ext, MacRuby не работает с RubyC, однако можно подключить любую Obj-C библиотеку.
итого получился проект для скачивания обоев с одного сайта и чтобы использовать его для его-то другого, нужно переписать больше половины вашего класса Downloader?
Ну да, паттернами тут даже и не пахнет.
troydm, переименуй «save into» в «save to». Так будет правельнее
>Так будет правельнее
Я надеюсь это тонкий юмор — подсказать как правильно пишется и в конце написать неправильно?
Довольно интересный ресурс создали, спасибо :)
Sign up to leave a comment.

Articles