Как некоторые здесь знают я пилю свой 3х колесный велосипед.
С тех пор кроме разработки было и 2 рефакторинга (2й сейчас в процессе шлифовки).
Но вот смотрю я на код есть пару ньюансов которые не нравятся мне чуть менее чем полностю
- в Category::initialize как и в Package::initialize сначала вызывается super а потом и FSobject.initialize. По идее он должен наследовать только fsobject. но для проверки нужен parent, а parent у него как раз repository. это можно как то улучшить или здесь все ОК?
- из за того что приходится тащить за собой params['entity] есть много лишнено кода (см комментарии в gpobject.rb; их там не так много, но они многое могут прояснить). Конечно можно это значение сохранять в массиве который будет instance property и делать shift/unshift. Но мне почему то кажется что должен быть более клевый способ.
Notes
- смотреть нужно ветку threads
- Конечно у меня не будет такого обьекта который будет наследовать только gpobject. Но что то мне подсказывает держать gpobject и dbobject раздельно
- сейчас нету класса который наследут только dbobject, но будет (напр keyword, useflag итд)
- сейчас иерархия классов такая
ebuild // еще не перешел на новую арх-ру ↑ package ↑ category ↑ repository ↑ fsobject ↑ dbobject ↑ gpobject
3 последних (bottom) самостоятельно нигде не используются - классы repository, category, package используются соотвественно в 12_repositories.rb, 13_categories.rb, 14_packages.rb.
- если не лень, можете посмотресть все классы из папки lib/portage (кроме ebuild), они все небольшые (имеют размер меньше 5кб)
Пожалуста не давайте советов «твой код фигня, нужно прочитать книгу ${book}». Если можна - короткие советы (название статьи/ссылка)о том как улучшить или что еще сделано очень плохо
Заранее извиняють что не смогу ответить днем, так как через пол часа пойду крутить педали
Спасибо