Я готовлюсь к конкурсу по программированию, где мы должны писать код на C ++, и все дело в том, чтобы за короткое время создать рабочий код. Примером может быть использование макроса для получения минимум двух целочисленных значений или использование memsets для инициализации массивов (но мне сказали, что вы не должны использовать и здесь ).
Это приводит к вопросу, какие методы кодирования существуют для использования на реальной работе?
Ответы:
Способ быстро создать рабочий код состоит в том, чтобы ... замедляться. Сделай очень маленькие шаги. Убедитесь, что вы знаете, для чего предназначен каждый шаг. Убедитесь, что после каждого шага ваш код компилируется и запускается.
Лучше всего использовать Test-Driven Development. Напишите провальный тест. Напишите достаточно кода, чтобы пройти тест. Рефакторинг, чтобы сделать код чистым, убедившись, что он все еще проходит все тесты. Повторение.
Если вы этого не сделаете, тогда очень легко написать большую кучу кода, который не работает. Тогда вам понадобится очень много времени, чтобы понять, почему это не работает.
источник
Внимательно рассмотрите стандартные библиотеки, особенно алгоритмы STL. Это сэкономит вам много строк кода и много времени. Ключ к победе в соревнованиях по программированию - это программирование на как можно более высоком уровне. В C ++ без внешних библиотек это означает вызовы STL вместо циклов for.
источник
Я регулярно участвую в соревнованиях ACM, надеюсь, некоторые из этих советов помогут вам:
Как уже говорили другие, ознакомьтесь с языком , в C ++, особенно в STL, он имеет как общие функции, которые вы хотели бы использовать (binary_search, min, max), так и надежные структуры данных, чтобы сэкономить ваше время (стек, чтобы избежать прямой рекурсии) , очередь для BFS, даже priority_queue для Dijkstra, если вам так нравится).
Определите категорию проблемы, если это математическое, динамическое программирование, теория графов и т. Д. Задайте себе вопрос: насколько вы знакомы с такой проблемой? После этого вы должны принять решение относительно порядка, в котором вы будете их решать , что сопровождается следующим пунктом ...
Вы хотите полностью понять проблему перед тем, как печатать, решить правильную проблему , на моих первых соревнованиях я думал, что, если я не буду печатать, я напрасно трачу свое время; Позже я обнаружил, что это было ошибкой.
Не думайте, что комментарии - это пустая трата времени, по крайней мере, в «умном» коде, вы не хотите построчно отлаживать, чтобы увидеть, что пошло не так (это настоящая трата времени), ясность значения .
Иметь удовольствие .
источник
:)
Ну, для меня это звучит так, будто вы знаете только C, а не C ++ вообще. На эти вопросы легко ответить кто-то с базовыми рабочими знаниями языка.
Просто использовать функцию?
std::min
уже существует.std::array<T, N>
уже инициализирует его содержимое.Первый шаг - знать язык, который вы используете.
источник
В дополнение к знанию языка, знайте свои инструменты, особенно ваш редактор. Я профессионально занимаюсь программированием более 15 лет, и в других случаях великие программисты замедлялись, потому что единственные команды редактора, которые они используют, это клавиши курсора и crtl-x / c / v.
Поддерживает ли ваш редактор нажатие одной клавиши для удаления строки? Чтобы сделать отступ строки? Перемещаться между функциями / методами? блок выбора / вставки? закладки? Двигаться словом? Может ли редактор автоматически генерировать классы / методы / функции? Поддерживает ли шаблоны, которые вы можете создать заранее? Быстрый рефакторинг? Запись макроса?
Знание вашего редактора может значительно ускорить время разработки.
источник
Думай прежде чем сделать. Лучше подумать и спланировать до написания реализации класса, чем после трех неудачных. Кроме того, думайте, пока вы действуете - выполнение действий небольшими шагами значительно упрощает процесс разработки.
Пишите только тот код, который вам нужен на данный момент. То есть, не начинайте писать код с менталитетом вроде: « Мне понадобятся эти функции позже, так что я мог бы просто написать их прототипы, пока я в этом ». Вещи меняются, планы меняются. В итоге вы получите код, который может даже не быть использован. Это пустая трата времени.
Знай, что ты делаешь. Нет ничего хуже, чем пытаться вспомнить, как работают основные функции и возможности языка и / или библиотеки. Ознакомьтесь с инструментами, которые вы используете.
источник
Было уже много ответов, но я хотел бы добавить свое мнение.
Чтобы ускорить кодирование, станьте машинисткой с такой скоростью, чтобы при наборе текста вы могли сосредоточиться как на логике, так и на коде. Существует много программ для обучения печатанию (например, Mastering, Rapid Typing, KTouch, gTypist), используйте их
Я видел много опытных программистов, которые все еще пишут двумя пальцами. Это приводит к неприятному коду без документации и действительно загадочному коду с макросами и сокращенными именами типов.
источник
Разработка программного обеспечения является одним из тех классических 80-20 видов деятельности, то есть когда первые 80% работы занимают 20% времени, а последние 20% работы занимают 80% времени.
Таким образом, ключ к ускорению вашей работы в целом заключается в том, чтобы работать над улучшением вашей производительности, что длится 20% усилий. Обычно это этапы отладки и работа, чтобы связать все вместе и сделать его пригодным для использования.
Вы можете улучшить это, проявив больше внимания на ранних стадиях. Планирование и проектирование на начальном этапе проекта может показаться пустой тратой времени, когда вы испытываете желание погрузиться в хардкорное программирование, но в дальнейшем они могут сэкономить огромное количество времени.
Люди будут говорить о конкретных методологиях, таких как TDD или BDD. Это замечательно, но если вы не делаете их сейчас, вам потребуется немного времени, чтобы приспособиться к ним, так что они, вероятно, не то, с чем вы хотите начать соревнование по программированию. Но остановка планирования того, что вы делаете, прежде чем погрузиться и сделать это, принесет плоды, несмотря ни на что. И они в любом случае являются первыми шагами к TDD и BDD. Это где вы хотите начать.
источник
Если это для реального соревнования по программированию, не используйте C ++. Используйте быстрый, интерактивный язык сценариев RAD. Это то, что VB6 абсолютно доминирует в. Иди предварительно вооружившись библиотеками, которые ты предварительно написал. Разделение строк, обращение к массиву, поиск, сортировка, элементарная графика, консольное управление.
Если это для работы, делайте с точностью до наоборот. Узнайте, что там, используйте твердый язык (C ++ - это хорошо), комментируйте все и так далее. Два типа среды не могут быть дальше друг от друга.
источник