Всем привет, JavaRush сообщество!
Сегодня поговорим о качестве кода. Да-да, дорогие друзья. Никто не совершенен. Ко всем когда-нибудь приходит понимание, что код мог бы быть лучше…
Но что же делать в этой ситуации?
Как минимум, начать исследовать этот вопрос. Раз уж вы здесь, значит тема вам интересна, так что поехали.
Сегодня опишем способы, при помощи которых можно сделать свой код лучше и чище. Так, чтобы не было в будущем стыдно за свой нынешний код!..))
Все эти методы помогут программисту стать хорошим программистом.
Хабре JavaRush :D, мои в том числе.
Следите за хорошими блогами и комментируйте посты, делитесь своим мнением.
1. Хочешь улучшить свой код — читай чужой
Если хотите резко повысить умение программировать, необходимо… читать код, написанный другими программистами. Можно верить в это, можно не верить. Но если рискнуть, обещаю: будет вознаграждение за потраченное время. Например, не читать на Хабре, как работает HashMap, ArrayList, LinkedList и так далее, а почитать их код и разобраться самостоятельно. Привожу список классов для прочтения:HashMap — самые частые вопросы на собеседованиях по нему. Можно убить сразу нескольких зайцев: и код понять, и знания нужные получить.
ArrayList — тот же случай, что и с HashMap. Там нет каких-то сложных вещей, но почитать и разобраться действительно стоит.
String — отличный пример. Понять, почему же он immutable.
AtomicInteger — прикольный класс: там описан процесс, как атомарно выполнять операции над Integer объектами.
А далее — хоть все классы подряд…)
2. Следуй Code Conventions — соглашениям по написанию кода
Соглашения по написанию кода — это набор рекомендаций, которые разрабатываются командами девелоперов и включают рекомендации по стилю программирования и методам для каждого аспекта кода, который написан внутри компании или определенного проекта. Эти соглашения как правило специфичны для каждого языка программирования и охватывают организацию файлов, отступы, комментарии, объявления, операторы, пробелы, соглашения об именах, методы и принципы программирования, правила программирования, передовые методы архитектуры и т. д. Основное преимущество определенных стандартов заключается в том, что код выглядит одинаково и написан в одном стиле. Это делает его более читаемым и помогает программистам понимать код, написанный другим программистом. Если стандартам кодирования будут следовать и последовательно применять их в процессе разработки, в будущем будет проще поддерживать и расширять код, реорганизовывать его и разрешать конфликты интеграции. Соглашения о коде важны для программистов по ряду причин:- 40%-80% стоимости программного обеспечения уходит на его обслуживание;
- вряд ли какое-либо программное обеспечение поддерживается автором в течение всей его жизни;
- соглашения о коде улучшают читаемость программного обеспечения, позволяя программистам быстрее понять новый код.
3. Используй Code Review — проверку кода другими
Code review — один из самых мощных инструментов по улучшению кода. Почему? Потому что код посмотрят те специалисты, которые его не писали. А свежий взгляд очень полезен. И зачастую именно Code Review помогает не допустить написание откровенно ужасного кода. Я знаю, что это не всегда возможно, потому что нужно найти еще одного человека, который бы захотел заниматься этим. Но это не значит, что этим инструментом не стоит пользоваться. Скорее наоборот: это повод найти единомышленников, которым также важно улучшить качество кода. К слову, кто запрещает найти их здесь на JavaRush? В месте, где все хотят стать программистами.4. Пиши Unit Tests — модульные тесты
Определенно, мой любимейший из методов по улучшению кода — это написание модульных тестов. Причем чем больше их писать, тем лучше. В компьютерном программировании модульное тестирование — это процесс разработки программного обеспечения, в котором самая маленькая тестируемая часть исходного кода, называемая модульной, тестируется индивидуально и независимо, чтобы проверить, работают ли они так, как ожидалось. Это поможет вам выявить сбои в алгоритмах и / или логике до выпуска кода. Поскольку модульное тестирование требует соответствующей структуры вашего кода, это означает, что код должен быть разделен на более мелкие и более сфокусированные функции. Каждый из которых отвечает за одну операцию над набором данных, а не за большие функции, выполняющие ряд различных операций.(как говорится, привет от Single Responsibility Principle…) Второе преимущество написания хорошо протестированного кода заключается в том, что можно предотвратить будущие сбои при небольших изменениях в существующей функциональности разрыва кода. Когда произойдет сбой, модульные тесты скажут, что было написано что-то не так. На первый взгляд, затраты времени на написание модульных тестов во время разработки выглядят как дополнительные расходы. Однако это сэкономит время в будущем, которое придется потратить на отладку. Это должен быть пошаговый процесс. Поэтому вперед и с песней — пишем тесты на все методы и классы :D5. Используй инструменты для улучшения качества кода
Нет разработчика, который бы никогда не ошибался. Обычно компилятор улавливает синтаксические и арифметические проблемы и выводит трассировку стека. Но все еще могут всплыть некоторые проблемы, которые компилятор не улавливает. Например, ненадлежащим образом реализованные требования, неправильные алгоритмы, неправильная структура кода или какие-то потенциальные проблемы, известные сообществу из опыта. Единственный способ уловить такие ошибки — попросить какого-нибудь старшего разработчика проверить ваш код. Такой подход не является панацеей и мало что меняет. С каждым новым разработчиком в команде у вас должна быть дополнительная пара глаз, которые будут смотреть на его / ее код. Но, к счастью, есть много инструментов, которые могут помочь вам контролировать качество кода. Я использовал в работе над разными проектами Checkstyle, PMD, FindBugs, SonarQube. Есть и другие. Все они обычно используются для анализа качества и создания некоторых полезных отчетов. Очень часто эти отчеты публикуются серверами непрерывной интеграции, такими как Jenkins.6. Пишите простой и понятный код
Всегда пишите простой, понятный и логичный код. Люди склонны писать сложный код, чтобы доказать свою способность делать это. Простой, но логичный код всегда работает хорошо, приводит к меньшему количеству проблем и является более расширяемым. Хороший код — лучшая документация. Если появилась мысль добавить комментарий, спросите себя: «Как я могу улучшить код, чтобы этот комментарий не понадобился?» ~ Стив Макконнелл.7. Читайте документацию
Одна из важных привычек хороших программистов — читать много документации. Пусть это будут спецификации, JSR, документы API, учебные пособия и т. Д. Чтение документов помогает вам создать ту крепкую основу, на которой вы наилучшим образом программируете. Последнее, но не менее важное: не сравнивайте себя с другими Ваше сравнение себя с другими приведет только к негативным чувствам и нездоровой конкуренции. У каждого свои сильные и слабые стороны. Поэтому важно знать их и работать с ними. Проанализируйте себя, перечислите свои сильные стороны и работайте над ними. Программирование —это настоящее удовольствие: наслаждайтесь им.“Постоянная одного человека — переменная другого человека.”
8. Следи за интересными блогерами
По всему миру тысячи энтузиастов работают над одними и теми же технологиями и пишут о них. Блоги часто пишутся самими программистами, и большинство из них делится личным мнением и опытом. Можно увидеть различные перспективы одной и той же технологии в блогах. Можно видеть как хорошие, так и плохие технологии в блогах. Как минимум читайте статьи на9. Читайте профильные книги
Ничто не может заменить хорошую книгу. Хорошая книга научит базовым понятиям в гораздо более простой форме и применимо к объектам реального мира. Их авторы и сами великие программисты. Читая книги, можно научиться на чужом опыте. Предлагаю прочитать «Java. Эффективное программирование» Джошуа Блоха. В этой книге представлены семьдесят восемь незаменимых практических правил программиста: рабочие, лучшие решения для задач программирования, с которыми вы сталкиваетесь каждый день. В ней содержатся наиболее практичные, авторитетные руководства, которые стоит использовать для написания эффективных, хорошо разработанных программ. Если вы только начинаете работать с Java, не имея опыта программирования, вы можете прочесть книгу «Sams Teach Yourself Java 2 in 24 Hours». А чтобы писать чистый код, есть отличная книга “Чистый код Роберта Мартина”. После нее появится “чувство прекрасного” по отношению к коду.10. Кодить! Кодить! Кодить!
Нельзя стать хорошим программистом, просто зазубрив книгу. Легко говорить о теоретических концепциях. Но узнать языковые ограничения или разработать лучшие практики можно только тогда, когда пишешь код. Поэтому, чтобы стать хорошим программистом, нужно писать много кода. Если вы новичок, начните с написания программ для простых задач, таких как ряды Фибоначчи, палиндром, треугольник Паскаля и т. д., А затем переходите к более крупным задачам, таким как дерево двоичного поиска и т. д. Если вы ищете онлайн-платформу для практики Java-программ, взгляните на Coding Ground. Более того, можно пройти курс CS50, перевод которого нам предоставил “сами знаете кто” :DПодведем итоги
Не ошибается тот, кто ничего не делает. Поэтому набираемся терпения и как трудолюбивый японец оттачиваем свои навыки кодирования. Для этого не забываем:- читать чужой код;
- проводить и просить, чтоб провели Code Reivew;
- писать модульные тесты;
- использовать инструменты для улучшения кода;
- писать простой и понятный код;
- читать документацию тех, кто смог;
- следить за интересными программистами;
- читать профильные книги;
- Кодить! Кодить! Кодить!
- подписаться на Романа на GitHub’e.
Полезные ссылки
- 10 способов улучшить свои навыки программирования
- Один из простых способов улучшить свои навыки программирования — читать чужой код
- 11 Best Practices and Tools to Improve the Java Code Quality
- How to improve Java programming skill
- 10 Tips to Become a Better Java Developer
Еще мои статьи
- Debug в Intellij IDEA: гайд для новичков
- Гайд по созданию клиента для Skyscanner API и его публикации в jCenter и Maven Central [Часть 1]
- Создание системы мониторинга цен на авиабилеты: пошаговое руководство [Часть 1]
- Логирование: что, как, где и чем?Как тестовое задание на собеседование превратилось в open-source библиотеку
- История Успеха. 20 часов программирования в неделю, магистратура и личная жизнь
- Как найти работу? Советы по рассылке резюме
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ