Я буду предельно честен с вами, примерно год или два назад ... Я считал себя в лучшем случае средним разработчиком.
Не поймите меня неправильно ...
Я все еще мог кодировать, исправлять возникающие ошибки, внедрять новые функции, но со временем старые ошибки продолжали появляться. Регулярный рефакторинг стал утомительным и отнимал много времени, поэтому затраты на проект продолжали расти.
Я знал, что мне нужно что-то изменить в своей структуре работы и своих повседневных рабочих привычках.
Признавать, что есть проблема!
Первое правило решения проблем - знать проблему, которую нужно решить ...
Мне потребовалось время, чтобы отбросить свое эго, признать проблему, и с этого момента это было лишь вопросом времени, когда я увижу РЕАЛЬНЫЕ РЕЗУЛЬТАТЫ!
Если вы могли резонировать с этим, то эта статья создана для ВАС, мой друг!
1- Диагностируйте перед решением
Это говорит само за себя, но я сам какое-то время игнорировал это.
Я думаю, что очень недооценивается, насколько важно тратить время на понимание проблемы / ошибки перед написанием кода.
Убедитесь, что вы потратите пару часов:
- Понимание проблемы.
- Воспроизведение ошибки и знание того, при каких условиях эта ошибка воспроизводима, а когда нет.
- Постройте блок-схему возможного решения.
- Обсудите это с близкими коллегами, если возможно, это может сэкономить вам много времени на этапе проверки кода.
2- Приоритет ремонтопригодности
Честно говоря, я приобрел эту дурную привычку игнорировать ремонтопригодность еще во время учебы.
Как студент; Я всегда работал над краткосрочными проектами, когда у вас есть проблема, а вы даете решение. БИНГО, вы прошли этот курс! Другими словами, моей целью было просто доказать, что я могу решить проблему!
Вскоре после этого я получил высшее образование и понял, что в индустрии высоких технологий так не работает.
Работа не заканчивается на выпуске продукта, вас ждет долгосрочное обслуживание!
Вы должны подумать:
- Зависит ли ваша реализация от времени? (Добавление дополнительного кода может изменить время, а затем перейти к реализации, управляемой событиями)
- Имеет ли ваша реализация зависимость класса / функции? (ваша реализация может работать не так, как ожидалось, если какие-либо зависимости изменились)
- Будет ли когда-нибудь расширен этот класс или функциональность? Насколько сложно будет его расширить?
3- Сделайте ставку на переносимость
Переносимость означает, что одна и та же часть приложения не зависит от платформы / SDK.
Программное обеспечение обычно состоит из трех основных уровней: приложений, промежуточного программного обеспечения и платформы.
Уровень промежуточного программного обеспечения - это в значительной степени инкапсулированная функция API / SDK, уровень приложения должен использовать только функции промежуточного программного обеспечения и уровней платформы.
Отсутствие в приложении каких-либо прямых функций API / SDK гарантирует вам портативность!
Если вам нужно использовать другой API / SDK, работа будет выполняться только на уровне промежуточного программного обеспечения!
4- Сделайте ставку на удобочитаемость / чистое кодирование
Мы живем в мире, где почти все можно заменить, поэтому вашим будущим новым коллегам будет проще читать ваш код и быстро понимать!
Просто убедитесь, что вы следуете рекомендациям по кодексу вашей компании, если они существуют. Если у вас нет рекомендаций по использованию кода, ознакомьтесь с рекомендациями по использованию кода Google ниже:
- Руководство по C ++
- Руководство по C #
- Быстрый гид
- Руководство по Objective-C
- Руководство по Java
- Руководство по Python
- R Guide
- Шелл Гид
- Руководство по HTML / CSS
- Руководство по JavaScript
- Руководство по TypeScript
- Руководство по AngularJS
- Руководство по Common Lisp
- Руководство по Vimscript
Я не знаю ни одного разработчика, который читал бы Чистый код и не рекомендовал бы его публично!
5- Правило трехкратного рефакторинга
Следуя упомянутому ранее пункту обслуживания, когда точно пора провести рефакторинг вашего кода?
Я узнал это правило от своего очень умного коллеги (Томас В.)…
Вам разрешено вносить незначительные изменения в класс / функцию только дважды, в третий раз, когда вы выполняете правильный рефакторинг!
Вам либо нужно провести рефакторинг, используя:
- Различные шаблоны проектирования.
- Добавление обратных вызовов.
- Разделите класс на несколько более мелких.
6- Продолжайте учиться
Хорошо, мы работаем в сфере высоких технологий, и каждый год появляются новые технологии / языки.
Не учитесь для краткосрочной задачи, учитесь для своей карьеры!
К счастью, Medium - одна из лучших платформ, которая держит нас в курсе всех новинок отрасли!
7- Документация
Следуя пункту о удобочитаемости, упомянутому ранее, документация является важной частью вашей повседневной работы!
Документацию можно разделить на 3 основные категории:
- Документирование протоколов, методов шифрования / дешифрования и т. Д.
- Документирование пользовательских случаев (желательно с использованием блок-схем, например, Draw.io)
- Документирование Для разработчиков (например, диаграммы классов с использованием генератора документов исходного кода как Doxygen)
8- TDD (разработка через тестирование)
Самая известная точка роста - модульное тестирование!
Невозможно предоставить качественный программный код, не убедившись, что он хорошо протестирован. Я лично использую GoogleTest для реализации своего модульного тестирования. Если вы новичок в написании собственных тестов, я предлагаю вам прочитать приведенную ниже статью от Christian Unigarro
Вам также может понравиться:
Следите за другими техническими статьями!