NB - Этот вопрос не касается RoR или системы плагинов Redmine.
Я работал над настраиваемым плагином для Redmine, платформы менеджера проектов, построенной на Ruby on Rails (RoR). Теперь я не В самом деле, RoR или, если на то пошло, парень Ruby. Мне удалось написать плагин, и все работает, несмотря на то, что за кулисами был беспорядок. "Ты делаешь это неправильно !!" чувство исходит из того факта, что я знаю, что RoR - это высоко ценимый фреймворк, поэтому должны быть простые, лучшие, элегантные, [вставьте сюда термин передовой практики] способы делать то, что я сделал. Я не слишком озабочен тем, чтобы сделать этот код как можно более совершенным, по той единственной причине, что он используется только для внутренних целей, и на самом деле люди заботятся только о том, чтобы он «работал» (я единственный, кто будет смотреть на код).
Какие мудрые слова можно передать, чтобы подавить фразу «Ты делаешь это неправильно !!» чувство? Я почти уверен, что если это чувство присутствует, то это, вероятно, правда, что поставленная задача выполняется неправильно.





В чем проблема? "Ты делаешь это неправильно !!" чувство - это суть нашего существования.
Могу только согласиться. Позвольте мне процитировать Скотта (simpable.com/code/sick): «Если как разработчик вы когда-нибудь сможете взглянуть на код, который вы написали 6 месяцев назад, и не почувствуете легкую тошноту, пора упаковать его и заняться чем-нибудь еще».
Правда! Ваш ответ меня рассмешил.
RoR, как и многие другие фреймворки, позволяет легко делать то, что они ожидают, и довольно сложно делать то, чего они не ожидали. Это верно почти для всех фреймворков, которые не являются пользовательскими фреймворками, которые вы разработали специально для своего проекта. Тот факт, что вам приходилось делать много грязных вещей за кулисами, чтобы что-то сделать, меня совсем не удивляет. Итак, если вы делаете что-то, чего не ожидали, тогда совершенно естественно чувствовать, что вы делаете что-то неправильно, потому что с точки зрения разработчиков фреймворка вам вообще не следует этого делать.
Учитывая, что он имел в виду, что его незнание RoR было самой большой проблемой плагина "Вы делаете это неправильно" и кодового беспорядка ... -1 из-за недостатка чтения.
Не подавляйте это чувство! Это ощущение это не верно - ключ к инновациям. Просто спросите себя: "Если это не так, что будет лучше?"
Не думайте об этом как о «Вы делаете это неправильно !!» Думайте об этом как о «Как лучше это сделать?» В лучшем случае вы в конечном итоге сделаете это более эффективно, в худшем случае вы обнаружите что-то, что может быть полезно для вашего следующего проекта.
Я никогда не заканчивал фрагмент кода, которым я был бы доволен на 100%. Но тогда я не верю, что в Мире есть хоть один (нетривиальный) фрагмент кода, который нельзя улучшить.
Меня беспокоят разработчики, которые всегда думают, что создали отличный код.
Во многих случаях RoR использует «синтаксический уксус» именно для того, чтобы вы почувствовали, что есть лучший способ. Вам, вероятно, следует взглянуть на некоторые другие плагины, чтобы понять используемые соглашения. В общем, если вы следуете соглашению с RoR, это кажется правильным.
Некоторое время назад я прочитал совет, который помогает мне в таких ситуациях. Попытка сделать что-то «правильным» способом, когда вы ничего об этом не знаете, может парализовать.
Итак, если мне нужно построить, скажем, приложение для управления клиентами, моим первым шагом может быть:
Построить действительно дерьмовыйприложение для управления клиентами.
Трудно построить хороший, но легко создать дрянной, который делает кое-что. И хотя трудно определить, когда что-то достаточно хорошо, довольно легко узнать, когда что-то не так.
Как только передо мной дрянной, я могу ясно видеть, что нужно улучшить. И это легко изменить, потому что дрянной на самом деле что-то делает; Итак, используя принцип TDD, я улучшаю его, сохраняя при этом работоспособным. В конце концов, дрянное приложение превращается в хорошее.
Многие из приложений, над которыми я работал, в конечном итоге оказались дрянными, когда я пытался не быть ... и, следовательно, были слишком сложными и трудными для изменения, отладки и улучшения.
Хороший. Я не знала, что мой способ развития ценится :)
Искренне +1 здесь. Я не думаю, что возможно создать приличную версию чего-либо, пока вы уже не создадите «дрянную» версию этого. (И это не ограничивается созданием программного обеспечения!)
Говорят, писатели должны писать что-нибудь каждый день, хорошо это или плохо.
Совет Марка Райберта - это если вы не можете написать что-то хорошее, написать что-то плохое, а затем отполировать это до чертиков.
Мой опыт программирования заключается в том, что когда я что-то делал несколько раз, я, наконец, начинал это делать хорошо.
Так что не ждите совершенства.
Если вы оглянетесь на любой фрагмент кода, который вы пишете сегодня, через несколько лет в будущем, скорее всего, вы будете шокированы тем, насколько он плох. Другими словами, это может показать, насколько вы прогрессировали с течением времени. Ощущение, которое вы испытываете, - это часть непрерывного обучения. Начните с того, что сделайте все правильно и сделайте его стабильным. Элегантность приходит со временем, и мода в стиле компьютерного программирования меняется, как и во всем остальном.
Хорошо сказано, я определенно застрял в колее "должен быть-самый-самый-элегантный-на-первой-итерации". Нет ничего важнее проверки реальности, чем просмотр имеющихся у меня наполовину запущенных сценариев.
В первый раз, когда вы работаете с языком, фреймворком и т. д., Вы делаете что-то «не так». По мере разработки других приложений или внесения изменений и улучшений в исходное приложение вы узнаете, что нужно исправить или что можно было бы сделать лучше.
В каждом проекте я почти всегда чувствую, что сделал что-то неоптимально или не идеально, но когда дело доходит до этого, код работает, позволяет людям делать то, что им нужно, и в некотором смысле добивается успеха. . Так что продолжайте писать и продолжайте учиться!
В частности, с Redmine система плагинов все еще нова, и мы пытаемся разработать лучшие практики. Поскольку Redmine (и Ruby on Rails) имеют открытый исходный код, я бы посоветовал поделиться своими впечатлениями на форумах проекта и узнать, что думают люди. Другие могут согласиться с вами и могут помочь улучшить системы.
Примечание: Я один из основных разработчиков Redmine, помог создать систему плагинов Redmine и выпустил около десятка плагинов Redmine. И даже я чувствую, что время от времени все идет вспять.
«В чем проблема?« Ты делаешь это неправильно !! » чувство - это суть нашего существования ».
Возможно, это не совсем связано, но:
«Программист - это тот, кто зарабатывает на жизнь решением проблем, которые были вызваны решениями, которые он изобрел ранее».
Действительно. Программист, который никогда не чувствует этого зуда, должен найти другое направление работы. Или, по крайней мере, держись подальше от моих команд.