Novator / Pandora

P2P Social Network
Other
147 stars 32 forks source link

Refactored a bit #15

Closed ghost closed 7 years ago

ghost commented 9 years ago

Как вам такой вид приложения? Доки, к сожалению пока нет.

  1. Насколько понятно и удобно расположены модули и классы?
  2. Предполагается наличие RVM (http://rvm.io) и gem Bundler
  3. Краткая инструкция по запуску на любой Unix-like системе - здесь
Novator commented 9 years ago

Я поглядел - увидел, что мой файл разбит на 20 мелких. И у меня возникло пару вопросов:

  1. Какой новый функционал добавлен для пользователей?
  2. Почему новый программист, придя в проект, начинает с полного рефакторинга и не пытается влиться в существующую разработку, наращивая новый функционал?
ghost commented 9 years ago

1 + 2. Новый функционал добавлен не для пользователей, а для разработчиков. Я посмотрел на код - debug с помощью p....; так же присутствует переписка кода уже давным-давно существующего, покрытого тестами сверху до низу с большим комьюнити и так далее. Все это пережитки прошлого.

Например:

  1. модуль интернационализации => i18n
  2. работа с БД => ActiveRecord (через ORM, что позволит быстро сменить базу данных, хоть SQLite, хоть PostgreSQL, хоть MongoDB даже)
  3. логгеры, конфигураторы приложения
  4. гем ActiveSupport, который вообще половину кода может ликвидировать в этом проекте.

Ruby - это язык с парадигмами DRY, Convention over configuration. Это попытка сделать код читабельным для всех Ruby-программистов, которые уже за многие годы привыкли, что код должен выглядеть примерно вот так. По моим соображениям это повысит шансы, что у проекта расширится комьюнити, а следовательно в дальнейшем уже быстрее будет наращиваться новый функционал. Т.е. я предлагаю использовать инструменты, которые всем давно знакомы, нежели изобретение велосипедов.

Так же хочу ввести использование RSpec, чтобы получить полную спецификацию и комплекс автоматизированных тестов, чтобы новые программисты могли добавлять код и не бояться каждый раз что-либо испортить. Чтобы можно было работать с TDD, т.е. Спецификация фичи (тест) => Код => Результат.

Novator commented 9 years ago

i18n

я тоже начинал с него, но мне не понравилось, что файлы-переводы нужно компилировать. получается: пандору не надо компилировать, а переводы - надо, мне это не понравилось. и потом были проблемы под ос виндовс. поэтому я реализовал простой механизм через текстовые файлы в папке /lang

ORM

вот это интересная тема. пытался даже разобраться, мне по описанию больше понравилась DataMapper чем ActiveRecord. но времени разбираться с ORM так и не было. к тому же я понял, что основная проблема не с доступом к данным, а с их отображением в таблицах Gtk - в этом направлении нет никаких готовых решений, поэтому всё придётся писать самому в любом случае (то что реализовано сейчас, нужно сильно дорабатывать).

парадигмами DRY, Convention over configuration логгеры, конфигураторы приложения... ActiveSupport... RSpec попытка сделать код читабельным для всех Ruby-программистов в дальнейшем уже быстрее будет наращиваться новый функционал

признаюсь, я сильно не знаком с привычками ruby-программистов, но меня все эти "привычки руби-программистов" больше настораживают, чем дают надежду на "расширение комьюнити". наоборот, привязавшись к "модным" руби-привычкам, мы отстраним от проекта других программистов, которые бы могли влиться в проект с минимальным усилием.

Новый функционал добавлен не для пользователей, а для разработчиков

Т.е. для пользователей ничего не добавлено, а для программистов (по кр. мере для меня, как пока самого активного разработчика) добавленный "новый функционал" ничего не даёт кроме головной боли.

Вобщем я понаблюдаю за вашим форком, и сейчас даже в группе вк запилю новость со ссылкой ваш форк (чтобы те, кто требовал от меня разделения кода, были удовлетворены). Если в вашей ветке появятся разработчики, которые начнут добавлять ФУНКЦИОНАЛ ДЛЯ ПОЛЬЗОВАТЕЛЕЙ (вы, как я понимаю, этим заниматься не собираетесь), то у меня, как у прикладного программиста (думающего в 1ю очередь о пользователях), появится причина для принятия предлагаемой структуры.

Novator commented 9 years ago

Николай, а вы в своём репозитории удалили все свои изменения, что ли? Мне сейчас ссылку некуда давать?

ghost commented 9 years ago

Михаил, все на месте. Здесь... может ветку забыли выбрать?

i18n файлы-переводы нужно компилировать.

Я что-то упустил? вот файл, работает без всякой компиляции, как в популярных RubyOnRails (web-фреймворк), так и в моём форке. Может я не так понял просто, что вы имеете ввиду?

ORM

Согласен, можно любой использовать, главное определиться какой именно и почему. Мне знаком только ActiveRecord, т.к. это основа работы с данными в Rails

добавленный "новый функционал" ничего не даёт кроме головной боли

Она пройдет в скором времени, не переживайте, это дело лишь привычки и понимания некоторых соглашений Ruby. Если мы сможем найти общий язык, то я готов сделать всю работу по "перестройке" и все задокументировать.

ФУНКЦИОНАЛ ДЛЯ ПОЛЬЗОВАТЕЛЕЙ

Я с вами полностью согласен в этом вопросе. Мне нужен список вещей, которые работали и до моего вмешательства, чтобы я смог удостовериться в том, что я ничего не сломал. Как опытный неПрикладной программист я вам скажу так. Мне встречались крупные и успешные (в бизнесе) проекты, которые не упрощали код годами, а лишь добавляли функционал. Все это дело, как правило, в конечном итоге отдавали на аутсорсинг для переписывания с нуля, потому что со временем каждая добавленная функция ломала 5 старых. Тестирование превращалось в нервные расстройства и, как правило, в уход программистов из проекта.

И еще у меня вопрос такой - каким редактором вы пользуетесь? В доках вы рекомендуете Geany, насколько я помню... Пробовали Sublime Text 3? Очень умный редактор, делает половину работы за нас - демонстрашка. Вполне возможно, что он поспособствует снятию головных болей.

Novator commented 9 years ago

О вашем форке добавил в группу новость: http://vk.com/wall-56092988_745

Пользуюсь самосборным Geany с улучшенной раскраской Ruby: https://github.com/Novator/geany

О Sublime Text слышал, но не смог установить и насладиться его прелестями (в репозитории убунты его нет, например).

ghost commented 9 years ago

И вряд ли появится, так как условно-платный:

Sublime Text may be downloaded and evaluated for free, however a license must be purchased for continued use.

deb x64 / обычный deb. Я попробовал все редакторы, которые только смог найти, включая олд-скульный vim. Этот вне конкуренции, особенно по количеству доступных расширений (есть дефолтное - vintage mode, включает большинство команд vim, что значительно упрощает жизнь).

Novator commented 9 years ago

Мечтается встроить редактор кода в саму Пандору (Мир-Файлы), но пока руки не дошли.

ghost commented 9 years ago

Боюсь даже представить - для чего?

OpenInformationTechnology commented 9 years ago

Чтобы Пандора стала юзабельной фичей, а не протоколом. Домохозяйки возрадуются такой возможности (без шуток) и будут ставить себе Пандору.

SqREL commented 8 years ago

Жесть

gambala commented 8 years ago

@18augst, вы провели титаническую работу. Я человек со стороны, попал сюда по ссылке, с пандорой не знаком. Но то, что вы продвигаете культуру написания качественного кода - достойно уважения.

moldabekov commented 8 years ago

@18augst, я тоже пришёл сюда не ведая ничего о Пандоре. Окинул взором кодовую базу и охнул. Удачи вам на этом пути!

@Novator, вам бы реально всё перепилить, потому что так не делается. И удачи вам в реализации своих идей!

Novator commented 7 years ago

@moldabekov, а как "делается"? И так анонимный профиль на гитхабе, ещё раз переименовывает в другой анонимный, а потом удаляет все свои наработки - так что ли "делается"?!

Так делают только маленькие обиженные мальчики. Мне таких "программистов" в пример не нужно. Если деятельность таких анонимусов не приняло сообщество, значит, их деятельность была бесполезна для него. Я, как один из членов сообщества пользователей СПО, это подтверждаю.

Может сейчас бы кто-то другой посмотрел его наработки и применил в своем форке - но не сможет, мальчик обиделся на сообщество и всё поудалял.