vdencheva/photodiary — Issue #1: Коментари по проекта
Author: mitio
Created: 2012-02-11 14:06:04+00:00
State: open

Като цяло е много приличен. Ако добавиш тестове, си си опекла работата :) Имам доста неща, които бих ти казал, за да си съвсем в "The Rails Way (tm)", но те са все дребни и нямат голямо отношение към свършената работа, която е добра.

Общи коментари:

* Когато може, използвай Ruby 1.9-style hash (`dependent: :destroy`), вместо hashrocket-а

* Има ли причина да включваш `gem "rake", "0.8.7"`, при това с експлицитна версия? Той си идва като requirement от rails gem-a, а и тази версия 0.8.7 не е необходима. Точно за тази цел е и bundler: `bundle exec rake …`.
* При положение, че ползваш `I18n`, нещата от `ExifData.FLASH_CODES` може да ги преместиш в `config/locales/exif_data.bg.yml` (например) и да си ги ползваш там в самия `ExifData`. Например `I18n.t "exif_data.#{hex_code}""`. Вероятно си го копирала от някъде този клас, но щом не е пакетиран и инсталиран gem, а е в твоя version control, си отговорна за глупостите в него :)
* Вместо `"/assets/noavatar.png"` в модела, е по-добре да връщаш `nil` или нещо от сорта и в контекста на view-то да ползваш `asset_path('noavatar.png')` (макар че това е спорно)
* Виждам, че си се справила прилично с автентикацията. Гледала ли си от някъде? Има възможност за някои подобрения, основно в "осоляването" в `User.encrypt` и малко в подредбата на login/logout URL-ите. На "защитата" ще ти споделя за тези неща.
* `"Потребителите на Фото Дневник е 1"` :) Плюс това има trailing whitespace на някои места. :) Какъв редактор ползваш?
* `has_comment_rights?` има редъндънт код вътре: няма голяма нужда от `? true : false`
* Предпочитай `collection.size` пред `collection.count` (напр. в `Album#photos_count`)
* В изгледи може да ползваш само `t` вместо `I18n.t`; още, в много случаи може да ползваш само `t('.list')`, ако не се лъжа, ще търси в `"#{controller_name}.#{action_name}"`

Бележки за дискусия на място:

* Authentication
* Организация на asset-ите (`scaffold.css`)
* Конвенции за именоване на файлове и CSS-класове
* Дуалистичните routes: `/users/albums` и `/albums/...`
* `collection.size` vs. `.count`
* `Photo#set_photo_attributes` и `ExifData` модула
* `Photo#previous_photo_id` и `next_photo_id` и сходните
* `I18n` с `".key_name"` и съответната конвенция

Опционални:

* Ако не се лъжа, някъде в exif-а има информация за ъгъла на завъртане на снимката. Добре би било да я завърташ след качване, защото иначе става [нещо от този род](http://dl.dropbox.com/u/2664150/Screenshots/vzdpz258sed4.png)

По-сериозни липси:

* Тестове! :)

Пример за `exif_data.bg.yml`:

bg:
exif_data:
0: …
1: …
1D: …