10 основных принципов программирования, которые должен знать каждый программист
Ваш код должен быть понятным и простым в обслуживании. Вот несколько других принципов программирования, которые помогут вам навести порядок в своих действиях.
Писать код легко, но написать хороший код сложно. Освоение основных принципов программирования — это верный способ написать высококачественный код, который будет эффективным, читаемым, надежным, безопасным и удобным в сопровождении, независимо от размера программного проекта.
Плохой код бывает разных форм: беспорядочные, массивные цепочки if-else, ненадежные программы, бессмысленные переменные и т. д. Как написать эффективный код? С дисциплиной и целью. Вот основные принципы программирования, которые сделают вас лучшим программистом.
1. Keep It Simple, Stupid (KISS)
Это звучит немного грубо, но это один из самых важных принципов, который следует учитывать при написании компьютерного кода. Что означает ПОЦЕЛУЙ?
Это означает, что вам следует писать код как можно проще. Одно из правил базового программирования — никогда не пытаться быть слишком умным или хвастаться толстым куском сложного кода. Если вы можете написать сценарий в одну строку, напишите его в одну строку.
Довольно просто. Читается легко, и вы точно знаете, что происходит.
Одним из принципов программирования в этом духе является использование понятных имен переменных. Воспользуйтесь преимуществами библиотек кодирования и используйте существующие инструменты. Сделайте так, чтобы вам было легко вернуться через шесть месяцев и сразу же приступить к работе. Если вы будете придерживаться простых правил, это избавит вас от многих ненужных страданий в будущем.
2. Пишите DRY-код
Принцип компьютерного программирования «Не повторяй себя» (DRY) означает отсутствие повторения кода. Это распространенная ошибка кодирования. При написании кода избегайте дублирования данных или логики. Если вы когда-либо копировали и вставляли код в свою программу, это не СУХОЙ код.
Вместо дублирования строк попробуйте найти алгоритм, использующий цикл.
Код DRY легко поддерживать. Легче отладить один цикл, обрабатывающий 50 повторений, чем 50 блоков кода, каждый из которых обрабатывает одно повторение.
3. Открытый/Закрытый
Этот принцип программирования означает, что вы должны стремиться сделать свой код открытым для расширения, но закрытым для модификации. Это гарантирует, что вы создадите код, который не нужно будет изменять даже при изменении требований. Это важный принцип при выпуске библиотеки или платформы, которую будут использовать другие.
Например, предположим, что вы поддерживаете структуру графического пользовательского интерфейса. Вы можете выпустить версию, чтобы программисты могли напрямую модифицировать и интегрировать выпущенный вами код. Но что произойдет, если вы выпустите крупное обновление четыре месяца спустя?
Их код сломается. Это, вероятно, сделает ваши когорты очень несчастными. Они больше не захотят пользоваться вашей библиотекой, какой бы полезной она ни была в период своего расцвета.
Вместо этого выпустите код, который предотвращает прямое изменение и поощряет расширение. Базовые принципы программирования, подобные этому, отделяют основное поведение от модифицированного поведения. Код более стабилен и его проще поддерживать.
4. Композиция важнее наследования
Если вы пишете код, используя объектно-ориентированное программирование, вы найдете этот принцип программирования очень полезным. Принцип композиции вместо наследования гласит, что объекты со сложным поведением должны содержать экземпляры объектов с индивидуальным поведением. Они не должны наследовать класс и добавлять новые модели поведения.
Опора на наследование вызывает две основные проблемы. Во-первых, иерархия наследования может быстро запутаться.
Композиционное программирование проще в написании, проще в обслуживании и позволяет гибко определять поведение. Каждое отдельное поведение представляет собой отдельный класс. Вы можете создавать сложные варианты поведения, комбинируя отдельные варианты поведения.
5. Единая ответственность
Принцип единой ответственности гласит, что каждый класс или модуль в программе должен предоставлять только одну конкретную функциональность. Как говорит Роберт К. Мартин: «У класса должна быть только одна причина для изменений».
Классы и модули часто начинаются именно так. Будьте осторожны и не добавляйте слишком много обязанностей, поскольку занятия становятся более сложными. Выполните рефакторинг и разбейте их на более мелкие классы и модули.
Последствия перегрузки классов двояки. Во-первых, это усложняет отладку, когда вы пытаетесь изолировать определенный модуль для устранения неполадок. Во-вторых, становится сложнее создать дополнительный функционал для конкретного модуля. Хорошие принципы программирования предотвращают эти проблемы до того, как они станут проблемами, с которыми придется иметь дело.
6. Разделение интересов
Концепция разделения ответственности представляет собой абстрактную версию принципа единой ответственности. Эта идея гласит, что вы должны разрабатывать программы, состоящие из разных частей, и эти части не должны иметь доступа друг к другу.
Хорошо известным примером этого является конструкция «модель-представление-контроллер» (MVC). MVC разделяет программу на три отдельные области: данные (модель), логику (контроллер) и то, что отображает страница (представление). Вариации MVC распространены в самых популярных сегодня веб-фреймворках.
Например, коду, обрабатывающему базу данных, не обязательно знать, как отображать данные в браузере. Код рендеринга принимает входные данные от пользователя, но обработку выполняет логический код. Каждый фрагмент кода полностью независим.
В результате получается код, который легко отлаживать. Если вам когда-нибудь понадобится переписать код рендеринга, вы можете сделать это, не беспокоясь о том, как сохраняются данные или обрабатывается логика.
7. Вам это не понадобится
Этот принцип означает, что вам никогда не следует кодировать функциональность, если есть вероятность, что вам что-то понадобится в будущем. Один из наиболее важных принципов компьютерного программирования, который необходимо изучить, заключается в том, что вы не должны пытаться решить проблему, которой не существует.
Пытаясь написать код DRY, программисты могут нарушить этот принцип. Часто неопытные программисты пытаются написать максимально абстрактный и общий код, какой только могут. Однако слишком большая абстракция приводит к раздутию кода, который невозможно поддерживать.
Применяйте принципы программирования DRY только тогда, когда вам это необходимо; если вы заметили куски кода, написанные снова и снова, реализуйте уровень абстракции. Не заглядывайте слишком далеко вперед за счет текущего пакета кода.
8. Документируйте свой код
При всех этих разговорах о принципах кодирования можно легко забыть о человеке на другой стороне, который в конечном итоге может сам проникнуть в ваш код.
Любой старший разработчик подчеркнет важность документирования вашего кода соответствующими комментариями. Все языки предлагают их; вам следует взять за привычку писать их. Оставляйте комментарии, чтобы объяснить объекты, улучшить определения переменных и упростить понимание функций.
Оставлять комментарии — это немного больше работы, пока вы программируете. Это отнимает время и отвлекает ваше внимание от реальной работы. В любом случае вы довольно хорошо понимаете свой код, верно? Какая разница? Стоит помнить, что нет ничего одноразового, даже в мире технологий. Каков в конце концов принцип компьютерного программирования, если человек на другой стороне заблудился?
Мы рекомендуем приложить дополнительные усилия и оставлять комментарии везде, где вы опасаетесь, что что-то станет неясным или неясным, особенно при сотрудничестве с другими. Не расстраивайте своих коллег-разработчиков, заставляя их расшифровывать ваш синтаксис.
Попробуйте написать программу, оставить ее в покое на шесть месяцев и вернуться, чтобы изменить ее. Вы будете рады, что задокументировали свою программу вместо того, чтобы перебирать каждую функцию, чтобы запомнить, как она работает.
9. Рефакторинг
Это трудно принять, но ваш код не будет идеальным с первого раза. Рефакторинг кода означает анализ вашего кода и поиск способов его оптимизации, чтобы сделать его более эффективным, сохраняя при этом результаты точно такими же. Это необходимо для написания более чистого и качественного кода.
Кодовые базы постоянно развиваются. Один из принципов программирования — помнить, что совершенно нормально пересматривать, переписывать или даже перепроектировать целые фрагменты кода.
Это не значит, что вы не добились успеха с первого раза, когда написали программу; со временем вы неизбежно лучше познакомитесь с проектом. Используйте эти знания, чтобы корректировать себя по мере вашего прогресса.
10. Чистый код любой ценой
Помимо всех фундаментальных принципов программирования, оставьте свое эго за дверью и забудьте о написании умного кода. Когда мы говорим это, мы имеем в виду такой код, который больше похож на загадку, чем на решение. Вы программируете не для того, чтобы произвести впечатление на незнакомцев. Вы в этой профессии, чтобы решать проблемы.
Не пытайтесь уместить массу логики в одну строку. Оставляйте четкие инструкции в комментариях и документации. Если ваш код легко читается, его, как правило, будет легко поддерживать.
Хорошие программисты и читаемый код идут рука об руку. При необходимости оставляйте комментарии, придерживайтесь руководств по стилю и по возможности ставьте себя на место следующего парня.
Изучите принципы компьютерного программирования, чтобы стать хорошим программистом
Обучение тому, как стать хорошим программистом, требует немало времени и усилий. Эти правила базового программирования представляют собой дорожную карту на пути к тому, чтобы стать профессиональным программистом. Следуя этим проверенным временем принципам, вы обеспечите себе успех в будущей карьере программиста.