Вопрос

Как мне узнать, не переоцениваю ли я?

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

Это было полезно?

Решение

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

Так что поговори с кем-нибудь об этом.

Другие советы

Лично я не могу пожаловаться ни на кого, кто действительно ПЛАНИРУЕТ свое программное обеспечение в первую очередь!Я делаю это, но я знаю МНОГО программистов, которые знают только, как просто перейти прямо к коду...и мне часто приходится исправлять такой код...

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

Совет, который у меня есть для вас, состоит в том, чтобы постоянно спрашивать себя:Думаю ли я о деталях моего решения или о реальной проблеме?

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

Затем отправляйтесь за решением.

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

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

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

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

Это также подход TDD.

Я обнаруживаю, что следую этим трем шагам, чтобы найти "идеальное" решение:

  1. Если бы у меня было все время и ресурсы в мире, что было бы лучшим решением в любом случае.(Технологически, логически, с точки зрения производительности, при необходимости решая несколько связанных проблем, переписывая модули, которые, по вашему мнению, могли бы работать лучше ...) Проведите свой (чрезмерный) анализ здесь, просто чтобы узнать как можно больше о месиве.Запускайте тесты, статистику и создавайте подтверждение концепции's.

  2. Чем это отличается от нынешней ситуации.В чем разница между результатами двух решений.Есть ли более быстрый способ получить тот же или похожий результат?Почему то или иное изменение решило бы проблему под рукой?Проведите еще несколько тестов, соберите статистику, обновите свои доказательства концепции.

  3. Найдите способ внести необходимые изменения, и Только необходимые изменения, отбросьте все, что не является существенным для этого изменения.Убедитесь, что вы не изменяете ничего, с чем не возникло бы проблемы.Протестируйте это, просмотрите изменения в коде, логике, структуре;и сведите их к минимуму, если это вообще возможно.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top