Подтвердить что ты не робот

Является ли микрокод поколения вредным?

Недавно я написал небольшой инструмент для создания класса для каждого уровня, который я пишу для скучной работы "формы над данными", где я трачу почти 90% своего времени (удручающе знаю)... подробнее об этом экономика улучшается;)

Мой вопрос в том, что, используя этот инструмент, вместо того, чтобы вручную вводить весь этот код изо дня в день, мне действительно больно как разработчик? Я чувствую, что всегда буду вносить изменения в этот инструмент, и поэтому я "должен" оставаться на вершине используемых шаблонов/сделанных вариантов /etc... но какая-то небольшая часть меня чувствует, что я могу потерять свое преимущество... am Я не прав?

4b9b3361

Ответ 1

Если инструмент может вытолкнуть код без мысли, тогда он, вероятно, сэкономит вам массу легкомысленного ввода.

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

Ответ 2

Это хорошо! Конечно, писать инструмент, чтобы выполнить всю работу за вас, невозможно и неправильно.

Но автоматизация повторяемых задач всегда хороша - и иногда запись определенных типов кода повторяется.

Он даже поощряется в книге "Прагматический программист" .

Убедитесь, что в элементе управления источника, который вы проверили в генераторе кода, и не его вывод (если вам не нужно вручную изменять код)!

Ответ 3

Вы определенно не ошибаетесь. Я использую генераторы кода в любом месте - в настоящее время я использую CodeSmith для создания моего DAO, просматривая базу данных.

Какое преимущество вы боитесь потерять? По моему мнению, генерация кода на самом деле дает вам преимущество.

Ответ 4

Ларри Уолл (из славы Perl) описывает три кардинальных достоинства программирования как Лень, Нетерпение и Хубность.

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

Ответ 5

Создайте то, что вы можете. Генерация кода - один из лучших инструментов, которые я получил за последние 2 или 3 года. Ввод одного и того же кода снова и снова (или копирование и вставка) подвержен ошибкам.

Ответ 6

Тратить меньше времени на то, чтобы сделать что-то, сделав что-то/кто-то другой, и больше времени, исследуя лучшие способы сделать это, как правило, приведет к тому, чтобы сделать это лучше.

Это не нужно просто применять к программированию....

Ответ 7

Ваш генератор кода (по крайней мере, в принципе - я сам не смотрел на него) - это The Right Thing, по крайней мере, насколько это возможно.

Следующим шагом будет увидеть, можете ли вы вместо генерации всего этого избыточного кода создать базовый класс, функциональность которого соответствует сгенерированному коду, а затем выводит из него код приложения. Использование наследования, а не генерация позволит вам извлечь выгоду из улучшений без необходимости повторного запуска генератора во всех ваших проектах. Возможно, что более важно, если вы настроите сгенерированный код, настройки будут потеряны, если вы повторно запустите генератор, но настройки в производном классе будут сохранены при изменении базового класса.

Ответ 8

Нет. Почему вы считаете, что IDE так популярны. Представьте себе, что если все люди, которые используют Visual Studio, должны программно создавать графический интерфейс без помощи среды IDE, это было бы ужасно. Я хотел бы поспорить, что большинство людей, которые используют VisualStudio, не будут знать, как вручную создавать формы, которые они создают в среде IDE. Но в этом нет ничего плохого.

Ответ 9

Я верю в генерации кода, где это возможно, для удаления задач программирования. Вы не потеряете преимущество, вы, вероятно, станете лучшим программистом, потому что вы потратите больше времени на изучение важного и интересного материала.

Кстати, ваш инструмент звучит интересно. Вы отпустили его где-нибудь?

Ответ 10

Генерация кода прекрасна, если вы понимаете, что генерируете. Физики используют калькуляторы, потому что они понимают формулы, которые они автоматизируют, и понимают, что их драгоценное время лучше потрачено на важные задачи.

Ответ 11

Генерация кода является одним из тех бесценных DO: s, которые пропагандирует Прагматический программист. Я действительно рекомендую эту книгу. Здесь Pragmatic Programmer быстро ref.

Ответ 12

Его почти лицемерный не код генерировать. Здесь мы автоматизируем все эти задачи, которые традиционно выполняются вручную... и все же многие из нас по-прежнему используют криптовальный код нашего кода, даже если его можно легко сгенерировать.

Ответ 13

Мой единственный опыт генерации кода - это макросы Common Lisp. Они используются все время. Все, что автоматизирует повторяющиеся задачи, полезно; это то, о чем программирование.

Прочитайте историю Mac.

Ответ 14

Представьте себе, что каждый раз, когда вы вносили изменения в инструмент и обновляли свой код, вы вручную изменяли этот дизайн во всех своих модулях.

Поскольку я начал генерировать код и получил скорость, я обнаружил, что редко получаю ошибки в сгенерированном коде.

Ответ 15

Я нахожу, что написание кода gen помогает мне узнать нюансы хорошей архитектуры. Вы начинаете видеть общие шаблоны, а не узкий вид вашего дизайна. Тем не менее, не используйте код gen в качестве замены хорошего объектно-ориентированного кода и не любите свой код так, чтобы вы игнорировали новые технологии. Например, если вы работаете в .NET и пишете код-ген для доступа к данным, лучше иметь хороший повод для того, чтобы не использовать Linq для SQL или NHibernate. Аналогичным образом, динамические данные могут помочь во многих сценариях форм-на-данных. Итак, мой совет: по мере необходимости набирайте новый материал и код.

Ответ 16

Мои 2cents в коде gen - то, что он также критичен для использования в рефакторинге. Я обнаружил, что необходимы частичные классы и хорошая утилита сравнения файлов (Araxis или BeyondCompare).

Сохраните созданный код в одном файле и пользовательские настройки, которые вы сделали для этого класса в другом файле.

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

CodeSmith FTW!

В то время как серверы сборки отлично справляются с тем, чтобы весь ваш код компилировался, он не учитывает различия в подписях с вашими сохраненными процедурами или тому подобным. Если вы регулярно запускаете код gen, вы можете более легко определить, когда происходят эти изменения. A unit test сообщит вам, что SP не прав, код gen расскажет вам, как сделать это правильно.