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

Сколько вы планируете, прежде чем начинать код?

Когда вы начинаете новый проект, как вы его планируете или как долго это займет?

псевдокод? Блок-схема?

Вы пытаетесь заранее подумать обо всех классах?

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

4b9b3361

Ответ 1

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

Они обычно следуют следующей структуре:

  • Создайте краткое описание, чтобы я имел цель.
  • Внедрите диаграмму классов, чтобы понять данные, с которыми я буду иметь дело.
  • Реализовать все классы.
  • Составьте схему схему использования, чтобы описать действия.
  • Развернуть схему использования (в HTML для webapps)
  • Подключите эшафот, выполнив модульные тесты и построив их.
  • Примите решение о выпуске продукта для коммерческого успеха, а затем забудьте обо всем этом.

Ответ 2

А меньше, чем я должен

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

, но фаза беспорядочных ошибок дает мне отличные идеи, которые я бы не имел, хотя через формальный процесс проектирования.

Редактировать. Я в основном получаю такие разногласия в клавиатуре, когда играю с большим/сложным. Интересно посмотреть, как далеко доходят вещи, прежде чем вы поймете, что дизайн "у меня в голове, так что это нормально" на 100% испорчен.

Ответ 3

Наверное, не лучший метод... но... Я планирую код.

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

Кроме того, я напишу заметки, в которых подробно описаны "основные функции" и "объекты незначительных/желаемых".

Ответ 4

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

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

Однако, если это простое кодирование. Я, как правило, просто выписываю, что на уме и проверяю.

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

Это мое мнение.

Ответ 5

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

  • встретиться и приветствовать всех участников проекта
  • принимать многочисленные заметки относительно воспринимаемых требований
  • создавать длинные маркированные списки требований высокого уровня
  • начинают разбивать требования высокого уровня на четко определенные детали.
  • начните заполнять программные требования. Спецификационный шаблон слова: SRS
  • создать проводные рамки в фотошопе, excel или (мой любимый) Balsamiq
  • укажите данные, которые необходимо захватить, и начните строить грубую схему
  • список структур классов в UML
  • определить временную шкалу проекта
  • бла-бла-бла
  • написать код
  • Надеемся, что запрошено то, что все еще требуется, когда код завершен!

В течение последних нескольких лет я слежу вместе с Agile (SCRUM) и придерживался совершенно другого подхода.

  • встретиться с владельцем продукта, чтобы узнать о задачах, которые будут построены.
  • разложить историю на задачи (основное планирование)
  • назначить время задачам
  • выполните более подробное планирование.
  • → написать тест, написать код для прохождения теста, рефакторинг → проверить в танце
  • демонстрирует рабочий продукт/функцию
  • начать процесс

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

Имейте в виду, что есть время и место для обоих способов развития. Я не хочу создавать программное обеспечение Jet с помощью Agile!

Ответ 6

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

Ответ 7

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

В любом случае, это зависит от сроков проекта для меня, крайние сроки - это самое главное.

Ответ 8

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

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

Ответ 9

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

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

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

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

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

Ответ 10

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

Ответ 11

Лично это зависит от объема и сложности проекта, количества людей, с которыми я работаю на нем, и общих ожиданий при доставке.

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

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

Ответ 12

I brew кофе и ремесла пару сэндвичей.

Действительно, это зависит от проекта. Я работал над некоторыми проектами в оборонной промышленности, которые занимали 2 года подробного планирования, прежде чем писать одну строку кода, и я сел и выпустил несколько небольших утилит из нескольких запросов в электронном письме из 3D или художник текстуры в одном сидении с мешком с кренделями и чашкой Джо.

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

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

Ответ 13

IMO 5 минут планирования впереди = 1 час кодирования....

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

Самой важной частью должен быть FLOWCHART.

Другие детали иногда можно позаботиться "на лету".

Ответ 14

При решении проблемы любого размера я всегда планирую записать ее хотя бы дважды.

Ответ 15

Я все еще в университете, и у меня пока нет опыта создания крупномасштабных программных систем, но...

Первое, что нужно сделать, - это выработать то, что нужно. До сих пор для меня это обычно спецификация присваивания, но в реальном мире речь идет о разговоре с клиентом. Много.

Затем я выясню, как сделать то, что требуется. Для относительно небольших программ, над которыми я работаю, я, как правило, нахожу в себе общее представление о том, как будет выглядеть моя программа (каковы важные части программы и как они взаимодействуют друг с другом). Это может быть связано с шипами, если я не знаю, как будет работать какая-то часть программы. Я не думаю, что этот подход (все это на мой взгляд) будет очень хорошо масштабироваться, но вопрос заключался в том, что мы действительно делаем...

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

Я не думаю, что я использовал псевдокод для разработки алгоритма. Я думаю, что псевдокод слишком низкий для разработки больших фрагментов программы.

Я использовал только блок-схему, чтобы помочь при разработке программы - назад, когда я изучал сборку и был совершенно новым для программирования (и это было полезно). "Мифический человек-месяц" говорит следующее: "Однако подробный блок-схема" поистине-удар "- это устаревшая неприятность, подходящая только для инициации начинающих в алгоритмическое мышление... Я никогда не видел опытного программиста, который регулярно делал подробные перед началом записи программ".

Ответ 16

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

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