Рубрики
Без рубрики

Как Разрабатывать Компьютерные Программы

Зачем Думать О Разработке Программы Перед Написанием Кода? Дай мне шесть часов до с… С тегами ооп, дизайн программ, java.

Зачем Думать О Разработке Программы Перед Написанием Кода?

Дайте мне шесть часов, чтобы срубить дерево, и я потрачу первые четыре на заточку топора, сказал Авраам Линкольн . Это заявление также относится к разработке программного обеспечения. Правда в том, что для разработки отличного программного обеспечения вам нужно много думать о дизайне и взаимодействии программных компонентов. Зачем тратить время на разработку программы? Если вы потратите время на обдумывание дизайна вашей программы, вы потратите меньше времени на кодирование. Следуя цитате Авраама Линкольна, вы потратите 33,3% своего времени на кодирование. Это связано с тем, что после разработки программы вы знаете все классы и методы, которые вам нужно закодировать, и как они изменят состояние (данные) вашей программы. Это поможет вам представить вашу программу как группу модулей, взаимодействующих друг с другом, тем самым делая вашу программу модульной. Модульность вашей программы облегчит распределение задач во время разработки. Это поможет вам написать лучший код, так как вам придется подумать о декомпозиции программы и поэтапной доработке. В целом, размышления о разработке программы перед написанием кода сделают вас лучшим инженером-программистом и программистом.

Зачем использовать Крестики-Нолики Как Наше Тематическое Исследование?

Крестики-нолики – это игра на бумаге и карандаше для двух игроков, X и O, которые по очереди отмечают пробелы в сетке 3×3. Игрок, которому удастся разместить три своих знака в горизонтальном, вертикальном или диагональном ряду, выигрывает игру. В следующем примере игру выигрывает первый игрок, X (En.wikipedia.org, 2018 год):

Игроки вскоре обнаруживают, что лучшая игра с обеих сторон приводит к ничьей. Следовательно, в крестики-нолики чаще всего играют маленькие дети(En.wikipedia.org, 2018). Я выбираю Крестики-нолики в качестве нашего примера, потому что их относительно легко программировать, и программирование даст мне возможность рассказать о некоторых ключевых методах разработки программного обеспечения. Вы можете найти код по следующей ссылке: Форкните меня на Github

Стратегии Разработки Более Совершенных Программ

Разложение

  • Как специалисты по информатике, мы знаем, что для решения большой проблемы нам нужно разбить ее на более мелкие задачи и решить эти более мелкие проблемы. В разработке программного обеспечения мы делаем точно то же самое. Чтобы разработать игру в крестики-нолики, я разделил ее на следующие части:
  1. Инициализируйте игроков – Получите имена игроков, назначьте им символы рисования и идентификаторы.
  2. Инициализируйте сетку игры – Нарисуйте сетку для крестиков-ноликов и установите начальные ходы для игроков.
  3. Подождите, пока игрок сыграет свою очередь
  4. Если игрок сыграл, проверьте, есть ли выигрыш
  5. Если есть выигрыш, спросите игроков, хотят ли они продолжать играть.
  6. Если они хотят продолжить игру, сбросьте сетку игры и сбросьте ход игроков (вернитесь к 2), в противном случае объявите победителя игры и выйдите из программы.
  7. Если сейчас есть, чередуйте повороты и возвращайтесь к 3.

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

Парадигма программирования

  • При работе над программным проектом рекомендуется выбрать парадигму программирования для использования при написании кода. Для игры в крестики-нолики я использую парадигму объектно-ориентированного программирования. Это означает, что я разработал всю программу вокруг классов и интерфейсов.
  1. Класс TicTacToe – Этот класс содержит основной метод нашей программы.
  2. Класс игровой доски – Этот класс реализует нашу игровую доску и обрабатывает все взаимодействия на ней.
  3. Класс игрока – Этот класс представляет игрока в игре, а также хранит атрибуты этого игрока.

Помимо этих классов, существует интерфейс GameConstants, совместно используемый этими классами. Этот интерфейс определяет все константы, необходимые для игры.

Хорошие имена и длина метода

  • При программировании убедитесь, что имена ваших классов, имена методов, имена переменных и констант отражают то, что представляет класс или что они делают. Хорошие имена классов, методов, переменных и констант сократят количество комментариев, которые вам придется делать. Все названия моих классов отражают то, что каждый из этих классов либо делает, либо обозначает.
    • Пример хороших названий методов – initGrid (инициализирует сетку игры в крестики-нолики), checkForWin (после того, как игрок сыграет, проверьте, выиграл ли игрок), drawCircle (рисует круги в ячейке сетки), Drawcross (рисует крест на ячейке сетки) и Recordscore (записывает счет для конкретного игрока).
    • Пример хороших имен переменных – Табло (массив, который отслеживает результаты игроков), boardState (массив ячеек сетки, который отслеживает состояние доски)
    • Пример хороших имен констант – NUM_OF_PLAYERS (представляет количество игроков в игре), NUM_GRID_ROWS (количество строк в игровой сетке), NUM_GRID_COLUMNS (количество столбцов в игровой сетке)

Контроль версий

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

Проверка кода

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

Контакты:

Подписывайтесь на меня в Твиттере

Раскошелите меня на Github

Напишите Мне По Электронной Почте: vladimirfomene@gmail.com

Оригинал: “https://dev.to/vladimirfomene/how-to-design-computer-programs-3ibp”