Мне нужно было написать полностью функционирующую программу. Это была моя первая «полноформатная» программа, а не небольшие фрагменты кода «одна функция/один класс», которые я делал до сих пор на курсе codecademy. Я знал, что это будет путешествие, и это было путешествие! Но, несмотря на некоторые незначительные неудачи (и одну или две крупные неудачи), я чувствую, что этот учебный опыт того стоил, и я поделюсь парой ключевых выводов, которые я сделал из этого проекта.
Вывод 1: начинайте тестирование КАК МОЖНО БЫСТРЕЕ!
Чтобы построить программу Блэкджек, я разбил тело программы на 5 классов: игрок, колода, класс карт, класс колоды и, наконец, класс игровой игры. Первые четыре класса использовались в финальном классе игровой игры как объекты, которые будут хранить данные, относящиеся к конкретному состоянию игры или раунда. Я все еще доволен тем, как я изложил программу задним числом. Тем не менее, я не доволен количеством времени, которое я написал, прежде чем приступить к тестированию. Я совершил красивую ошибку, завершив всю программу до того, как начал отладку. Это привело к длительному периоду времени, когда я не мог написать ничего нового и застрял, просто исправляя уже записанные идеи. Теперь, честно говоря, конечные результаты такие же, но я твердо верю, что для чего-то большего, чем моя короткая игра в блэкджек, процесс отладки без каких-либо перерывов или изменения темпа был бы ошеломляющей перспективой. Так что повторю слова более опытного программиста, который помогал мне с моим проектом: Всегда все тестируйте. Откройте test.py рядом с вашим основным проектом, и каждый раз, когда вы заканчиваете метод или класс, бросайте его в тестовую среду и тестируйте! Это избавит вас от головной боли в дороге.
Вывод 2: Иногда нужно все испортить, чтобы все получилось правильно.
Этот пункт тесно связан с первым пунктом. Эксперименты так многому учат в программировании! но это может убить ваш прогресс, если вы не будете осторожны. Я приведу пример. В начале программы я действительно почувствовал, что прорвался через мысленный блок, связанный с циклами в моих методах. Я был в восторге от новых возможностей, которые открывались перед моими новыми знаниями, и начал писать свои методы. Только в конце всего проекта я понял, что неправильно понял, как работает завершение цикла, и неправильно написал каждую точку останова. Теперь мы могли бы остаться с прошлым в страдании от необходимости исправлять большинство методов в программе, или мы могли бы сосредоточиться на сути этого вывода. Из-за этой простой, но ломающей игру ошибки я так много узнал о циклах и методах наложения, что мне, возможно, потребовались бы еще недели, чтобы понять, пытался ли я понять это до того, как начал писать. Начинайте писать, делайте ошибки и учитесь, преодолевая проблемы.
Вывод 3: Найдите свою резиновую уточку.
Эта концепция, вероятно, самая простая, но ее легче всего забыть. Для тех, кто читает, кто не понимает, что такое резиновая уточка программистов, это концепция буквальной резиновой уточки, подумайте о классической утке размером с ладонь, которую вы можете увидеть в ванне из классического фильма, но вместо того, чтобы быть в ванне, она сидит на взгромождении. на столе программиста. Смысл этой утки в том, чтобы дать программисту «ухо», чтобы выслушать проблемы, которые у него возникают, и в процессе объяснения утки они смогут решить проблему. Я не призываю никого немедленно перестать читать это и пойти купить маленькую резиновую уточку, но я говорю, что для любого, кто пытается решить проблему программирования, общение с сообществом является лучшим ресурсом. Моя резиновая уточка была не резиновой уткой, это был один из моих друзей-программистов, почему бы нам не назвать его Люком. Люк был для меня бесценным ресурсом не только из-за того, сколько раз он мог объяснить проблемы, с которыми я сталкивался, способами, которые помогли мне учиться и расти как программисту, но и из-за того, сколько раз я объяснял проблему только ему. на полпути к объяснению понять, что я уже знаю, как ее решить. Ваше сообщество — ваш самый большой ресурс, и нежелание общаться с людьми только повредит вашему росту как программиста.
Я мог бы целый день говорить о конкретных выводах программирования или проблемах, которые у меня были, но любой, кто программирует, знает об этих проблемах, поэтому я решил поговорить о выводах программирования в целом. Если вам интересно узнать о финальной версии игры, я опубликую ссылку на git ниже, чтобы вы могли ознакомиться, и я хотел бы поговорить об этом с людьми, так что не стесняйтесь обращаться! Удачи в программировании!