Как я могу улучшить свой дизайн программы и решить проблему?
Я уже некоторое время кодирую и поддерживаю несколько языков программирования, но теперь чувствую, что мне нужно улучшить решение проблем или разработать программу.
Какие навыки мне нужны, чтобы иметь возможность разрабатывать программу в качестве решения проблемы?
Больше:
Вопрос заключается в том, как разработать решение, а не как лучше кода.
Ответы
Ответ 1
Существует много разных подходов/советов.
-
Книга. Дизайн по шаблонам, элегантный дизайн и т.д., Некоторые применимы к другим программным решениям для решения технических проблем, когда они решаются в целом.
-
Код кодового кода. Код для удовольствия, код только ради кодирования, возьмите проблему, которая НЕПОСРЕДСТВЕННО не имеет ничего общего с работой, и просто код на ней (в свое время, конечно). Вы в конечном итоге решаете одну и ту же проблему несколькими способами и, надеюсь, начнете рассматривать проблемы по-разному. Или мы могли бы сказать "думать вне коробки".
-
Поднимитесь на вызов. Когда вы сталкиваетесь с проблемой, что единственное решение, которое вы можете придумать, является "уродливым" или "грязным". Подходите к решению найти элегантное решение. Элегантные решения - это 90% обсессивно-компульсивный, 10% садистский, по крайней мере, когда вы начинаете.
-
Не стесняйтесь задавать вопросы. Думаю, у тебя может быть это. Поэтому просто продолжайте задавать вопросы.
Ответ 2
Сохраните список всех проблем, которые вы или другие продлеваете или поддерживаете свой код.
Регулярно просматривайте этот список и сортируйте его по количеству трудностей. Затем создайте или найдите методы, которые минимизируют трудности и превращают их в постоянно меняющийся список "лучших практик".
Ответ 3
Прочитайте Код завершен
Code Complete 2nd Edition http://cc2e.com/_img/cc2e-cover-small.gif
Ответ 4
Я поражен тем, сколько людей предлагают полный код или другие книги. По моему опыту люди делают большие прыжки/приобретают навыки, работая с другими более опытными разработчиками. Здесь отлично работает модель наставника/ученика. Эти двое работают вместе с наставниками, определяющими решения, но работая над всеми вопросами, чтобы помочь младшему человеку понять.
Увидеть мастера в действии и то, как они работают, и то, что они думают, - отличный способ узнать. Кроме того, если у людей есть разные способы работы или мышления, они могут увидеть другие точки зрения/аспекты выполнения работы/работы.
ИМО ничего не может сравниться с моделью наставника. Выполнение большого количества кодирования и проектирования также является способом его получения, но вы не получаете такую помощь, которая так важна для того, чтобы стоять на плечах других.
Ответ 5
Найдите наставника - человека, который много лет работал в вашей конкретной проблемной области - и учитесь у них.
Мой лучший код поступает из рецензий, официальных и неофициальных. Чтение книг и изучение шаблонов дизайна велико, но лучшая обратная связь - это когда кто-то может указать прямо на код, над которым вы работаете, и сказать: "Вам нужно изменить это, то и другое".
Конкретная, конструктивная обратная связь от ваших сверстников сразу же полезна.
Ответ 6
Для стартеров я бы предложил прочитать книгу Стива Макконнелла "Code Complete, 2nd Edition"
http://cc2e.com/
Ответ 7
Я согласен с вышеуказанным сообщением, касающимся кода Complete, также проведите некоторое исследование по разработке, основанному на тестировании, и принципам SOLID.
Ответ 8
Для решения проблемы, посмотрите, как другие люди решили проблемы. Я рекомендую Руководство по разработке алгоритмов и Алгоритмы в двух словах. Обе эти книги берут вас из описания проблемы через несколько итераций решений, чтобы показать вам процесс мышления, а не перейти непосредственно к окончательному решению.
Ответ 9
Самое эффективное решение, которое я нашел, - найти проблему и напасть на нее. Начните с небольших проблем и прокладывайте себе путь. Если необходимо, создайте проблемы (хотя и не на работе, и, конечно, не на первичной ветке).
Как только вы поймете проблему, попытайтесь понять ее сами. Если вы терпите неудачу, Google из-за этого. Даже если первое попадание в Google исправляет вашу проблему, все равно посмотрите на другие. это поможет вам понять процесс решения проблем и как работают умы людей.
Ответ 10
Я нашел эту книгу очень хорошим руководством для написания поддерживаемого и хорошо спроектированного программного обеспечения. В нем рассказывается, как создать решение, объясняя, как распознавать, когда использовать методы объектно-ориентированного программирования для создания более модульного и хорошо продуманного подхода.
alt text http://headfirstlabs.com/Images/hfooad_cover.gif
http://headfirstlabs.com/books/hfooad/
Ответ 11
Говоря о книгах, я предлагаю этот великий, Мартин Фаулер
Рефакторинг: улучшение дизайна существующего кода
Ответ 12
Начните играть на языках, отличных от тех, которые вы используете сейчас. И с этим я не хочу начинать использовать Java в качестве разработчика .Net.
Выберите язык, который вы бы не рассматривали в рабочей среде. Язык, который работает совершенно по-другому и по какой-то причине посвящает следующее. Lisp здесь.
Идея здесь в том, что вы начинаете использовать язык, который изменит ваш образ мыслей. Иногда вам нужно поразить ваши ржавые шестерни с помощью большого кувалды, чтобы заставить их снова поворачиваться. Странным языком может оказаться этот молот.
Ответ 13
Чтение и разговоры об этом помогут. Опыт тоже велик (предполагая, что вы не просто восстанавливаете вредные привычки).
Лучший наставник.
В отсутствии этого напишите что-нибудь, а затем удалите его. Затем напишите снова через пару дней.
Звучит странно, но во второй раз вы сделаете гораздо лучшую работу:-) Как муравьи, мы, наши линии, становимся более прямыми, чем больше путешествуем по тому же пути.
Павел.
Ответ 14
Думаю, вам понравится Programming Pearls. Это очень читаемое, наполненное советами, и дало мне много информации о том, как подойти к проблемам.
Также много раз практикуйте класс проблем, пока не начнете распознавать его шаблоны и характеристики. Онлайн-судьи, такие как SPOJ, хороши для этого.
Мне также необходимо было ввести введение в разработку и анализ курса алгоритмов в университете. Как и другие, упомянутые выше, если кто-то более осведомлен, как наставник, может сэкономить вам время и горе, когда вы застрянете. Но для меня просто возможность обсуждать, и мои мысли с такими людьми, как мои одноклассники, заставляли меня думать более тщательно.
Теперь, если бы я знал, что этот парень Дональда Кнута курит....
Ответ 15
используйте большую библиотеку проектов с открытым исходным кодом, такую как исходный кузнец или код Google. попытайтесь реализовать часть одного из этих проектов, а затем сравните. что лучше в каждом дизайне. обучение - это исследование, которое ведет к открытию.
Ответ 16
Прочитайте о структурах и алгоритмах данных. Сначала я помещал структуры данных, так как чем дольше я занимаюсь в сфере программного обеспечения, тем больше я понимаю это о структурах данных. Покажите мне свои структуры данных, и я могу, наверное, догадаться о ваших алгоритмах. Вам нужно понять, как выбор правильных структур данных может сделать или нарушить систему, и как решить между ними. Я предлагаю прочитать об алгоритмах, потому что некоторые алгоритмы очень интуитивно понятны, и вы вряд ли обнаружите их сами, когда будете просто ладить с проблемой. Книги алгоритмов Sedgewick неплохие, если они все еще печатаются.
Code complete - отличная книга (стоит цена за главу об оптимизации - "настройка кода" - одна), но для дизайна... Я не уверен. Второе издание может быть лучше по этому поводу, у меня только первый... и его до сих пор очень ушастый: -)
Ответ 17
На мой взгляд, лучший путь от промежуточного до продвинутого уровня:
Прочтите хороший код, написанный другими людьми.
Конечно, сначала вам нужно понять основную теорию. Но есть точка, которую вы не можете преодолеть, просто прочитав теорию. Переход оттуда требует большой работы, а это означает практический опыт чтения и написания кода.
Ответ 18
Извините, пожалуйста, отправьте дубликат ответа, не выясните, как удалить
используйте большую библиотеку проектов с открытым исходным кодом, такую как исходный кузнец или код Google. попытайтесь реализовать часть одного из этих проектов, а затем сравните. что лучше в каждом дизайне. обучение - это исследование, которое ведет к открытию.
Ответ 19
1) Прочитайте как можно больше книг.
2) Изучите как можно больше открытого кода.
3) Код, просмотр кода и парольное программирование как можно больше.
удачи:)
Ответ 20
Чтобы улучшить кодирование, введите код еще.