- 10 лайфхаков для того, кто хочет приучить себя к поддержанию чистоты
- 1. Не откладывай до последнего
- 2. Пользуйся правилом двадцати минут
- 3. Мотивируй себя
- 4. Делай всё сразу
- 5. Начинай со своего рабочего стола
- 6. Выброси всё ненужное
- 7. Определи, что ты не любишь больше всего
- 8. Постарайся сделать процесс уборки приятным и полезным
- 9. Приучи себя хранить вещи на своих местах
- 10. Планируй
- Чистый код: причины и следствия
- Что такое чистый код?
- Стоит ли писать чистый код?
- Что поможет улучшить ваш код?
- Самоорганизация
- Командная работа
10 лайфхаков для того, кто хочет приучить себя к поддержанию чистоты
Если ты тратишь по полчаса на то, чтобы найти нужную вещь, вынужден пробираться через завалы одежды, собираясь утром на работу, а при гостях извиняешься за то, что твоя комната больше похожа на поле битвы, а не на жилое помещение, тебе срочно нужно приучать себя к порядку и чистоте. Убранная квартира — это не только залог здоровья и продуктивности, но и один из важных факторов для поддержания хорошего настроения.
1. Не откладывай до последнего
Парадоксально, но для того, чтобы сделать свою квартиру чистой и опрятной, нужно просто начать убираться. Как правило, заставить себя начать — это самое сложное. Появляется куча «неотложных» или «более важных» дел, ради которых ты с радостью оставишь свои надежды на чистоту.
Возьми себя в руки и начни с какой-либо комнаты, в которой ты проводишь меньше всего времени. Это на случай, если тебе надоест убираться, и ты захочешь передохнуть: грязь и мусор не будут так сильно мозолить глаза. Начав с чего-то одного, ты легче настроишься на уборку всей квартиры. А вот поиск отговорок процесс не ускорит.
2. Пользуйся правилом двадцати минут
Правило двадцати минут гласит: «Уделяй небольшой отрезок времени на ежедневную уборку — и тебе не придется тратить свои выходные на наведение порядка». Двадцать минут — самое оптимальное время для того, чтобы успеть пропылесосить, протереть пыль и помыть за собой посуду. В этот временной промежуток пытайся разрешить все видимые проблемы, связанные с чистотой и порядком.
3. Мотивируй себя
Самый эффективный способ достигнуть соглашения с самим собой — это мотивировать себя на уборку. В детстве с этим дела обстояли легче: мама обещала выпустить тебя погулять с друзьями или купить на ужин что-нибудь вредное и вкусное. Что ж, сейчас именно тебе выпала роль искусителя. Пообещай себе что-нибудь приятное в обмен на поддержание чистоты. Допустим, если ты сможешь поддерживать порядок в доме всю неделю, то устроишь себе целый день задротства в любимую игру или так называемый праздник живота. В любом случае у тебя есть возможность позволить себе купить что-то, что давно тебе хочется, всего лишь за уборку.
4. Делай всё сразу
Не жди, пока в корзине накопится гора грязного белья или пока у тебя не останется всего лишь одна глаженая рубашка. Видишь, что в раковине стоят несколько тарелок? Помой их сразу — это гораздо легче, чем перемывать всю имеющуюся посуду в доме. Заметил пыль на полке? Протри, пока помнишь об этом. Всё просто: чем больше занятий по дому ты откладываешь, тем сложнее тебе будет разбираться с ними в дальнейшем.
5. Начинай со своего рабочего стола
Можно простить висящие на дверце шкафа вещи или тонкий слой пыли на полках, но вот бедлам на твоем рабочем столе — это слишком серьезно. Во-первых, это лишний источник стресса. Место, за которым ты работаешь, должно быть идеально чистым и убранным. Во-вторых, это постоянные отвлечения. На твоем рабочем столе должны лежать только те вещи, которые ты используешь в работе. Если ты заставляешь себя дописывать отчет на краешке стола — неудивительно, что твоя работа постоянно стопорится и приносит тебе только негативные эмоции.
6. Выброси всё ненужное
С этого многим стоит начать. Присмотрись внимательно к своим вещам и без сожаления составь список предметов, которым давно пора на свалку. Всё старье (поломанные, неиспользуемые, связанные с негативными воспоминаниями вещи) должно покинуть пределы твоей квартиры. Годами складируя подобный хлам, ты только удваиваешь себе нагрузку при уборке помещения.
7. Определи, что ты не любишь больше всего
Корень беспорядка в твоей квартире помогут определить твои нелюбимые занятия. Понаблюдай, где после уборки беспорядок появляется в первую очередь. Быть может, ты терпеть не можешь раскладывать вещи в шкаф, и поэтому твоя одежда развешана на диване и стульях. Или ты предпочитаешь коротать вечера с тарелкой чего-нибудь вкусного у телевизора или ноутбука — тогда не удивляйся, почему в твоей спальне постоянно появляется мусор.
Чаще всего самым грязным местом в квартире является кухня, особенно если человек не любит готовить. В таком случае и на уборку во время приготовления еды он вряд ли решит потратить свое время. Как итог — горы немытой посуды, беспорядок на столе и на полках.
8. Постарайся сделать процесс уборки приятным и полезным
На самом деле это легко. Включи любимую музыку или новую аудиокнигу в плеере — это поможет тебе не зацикливаться на самом процессе уборки. К тому же помни о том, что уборка — это физическая нагрузка, а значит, ты тренируешь мышцы ног и рук.
9. Приучи себя хранить вещи на своих местах
У каждой вещи в твоей квартире должно быть свое место. Во время уборки ты не должен задумываться о том, куда положить тот или иной предмет. Если ты всё же поймал себя на мысли, что понятия не имеешь, куда его пристроить, то вполне вероятно, что вещь не такая уж и нужная.
Твои вещи должны быть в шкафу, зубная щетка — в ванной, а посуда — исключительно на кухне. И никак иначе. Когда ты привыкнешь к такому раскладу, наводить порядок тебе придется гораздо реже.
10. Планируй
Это не шутка — даже уборку можно (и даже желательно) планировать заранее. Можешь, например, разделить свои занятия по дому на те, что не вызывают у тебя отрицательных эмоций, и те, которые ты терпеть не можешь. Даты генеральной уборки старайся назначать заранее, отмечая их в календаре. Выполняй уборку по прописанным ранее пунктам — так у тебя не будет возможности забыть о чём-то важном.
Источник
Чистый код: причины и следствия
Автор: Виктор Свирский, Senior Python Developer / Team Lead, DataArt
Сколько программистов, столько и определений, что такое чистый код. Часто, проводя собеседование, я слышу, что хороший код — это такой, который легко читается. Согласен, но как подсказывает мой личный опыт, это только вершина айсберга.
Первый звоночек, который нам сообщает, что код перестает быть чистым — это рост времени разработки новой функциональности и увеличение регрессионного скоупа при малейшем изменении в системе. Это следствие того, что технический долг накапливается, компоненты в системе очень тесно связаны, автотесты отсутствуют. Причины этого могут быть:
- Внешние — такие как давление со стороны бизнеса и его стремление получить новый функционал быстрее.
- Внутренние — плохо налаженные процессы разработки и взаимодействие внутри команды, отсутствие контроля и стандартов разработки или банальный недостаток компетенции.
Не стоит откладывать работу над качеством кода и архитектуры в долгий ящик. Во время спринта важно уметь разделять задачи, которые имеют прямую ценность для бизнеса (задачи с новой функциональностью), и технические задачи, которые имеют для бизнеса лишь косвенный эффект. Пропорция разделения зависит от текущего состояния проекта, временных рамок и количества свободных рук.
Что такое чистый код?
Получается, чтобы сказать, что код чистый и система спроектирована грамотно, легкого чтения кода недостаточно. Он должен обладать и другими качествами:
- Код легко модифицировать. При правильном проектировании и архитектуре расширение кода обходится без особых временных и технических затрат. Сущности кода не должны быть тесно связаны между собой, код должен быть отчасти абстрактным и самодостаточным. Каждая сущность, которой мы оперируем при разработке, должна отвечать только за свою часть функциональности.
- Код должен быть стабильным, предсказуемым, безопасным и надежным. Каким бы простым код не был в чтении, он должен быть покрыт тестами. Хороший код и тесты всегда рядом. Причем важно не только количество тестов, но и их качество. С таким кодом не возникает проблем при запуске и отладке, он не вызывает изменений в окружающей среде.
- Защищенный код. При написании любого кода нельзя забывать об общей безопасности продукта. Рекомендую ознакомиться с базовыми принципами безопасности и придерживаться их. Если мы говорим о веб-проектах, рекомендую OWASP.
- Хороший код — код, которого нет. Это не значит, что весь код должен быть написан в одну строку, а вы — обязательно гордиться тонкими методами. Это значит, что код не стоит дублировать, а часть общих вещей должна остаться на уровне абстракций. Теоретически, упрощение кода должно привести к уменьшению количества дефектов.
- Само чтение кода тоже немаловажно. У каждого разработчика есть собственный стиль написания, а уровень чтения зависит от нашего опыта. Все мы хотим писать простой, красивый и лаконичный код.
Чтобы уйти от субъективной оценки качества своего кода, с 1961 года введен термин «запахи кода» или «код с запашком». Это группа правил и рекомендаций, которые четко определяют, пора ли делать рефакторинг. «Запашок» ведет к распаду кода, и разработчики всегда должны стремиться его устранить. Необходимость рефакторинга напрямую следует из наличия запаха кода, и предотвращая причину, мы сможем избежать и следствия. Более подробно о ключевых признаках того, что вам пора заняться рефакторингом можно прочесть в книге Мартина Фаулера «Рефакторинг. Улучшение существующего кода».
Стоит ли писать чистый код?
Однозначно стоит! Но не всегда и не везде стоит уделять чистоте слишком много внимания.
Не стоит забывать о целесообразности и сроке жизни вашего кода. Например, если перед вами стоит задача разработки концепции — PoC (Proof of concept), и вы доказываете, что выбранный стек технологий выполняет поставленную задачу, ваш код станет неактуален уже через неделю или две. Не стоит тратить силы на совершенствование этого функционала.
Бытует мнение, что не нужно следить за качеством кода или части системы, которые в скором времени будут заменены. И это неверно по нескольким причинам. Высокое качество исполнения сделает переход или интеграцию с новыми частями более простыми, бесшовными и быстрыми. Оно наверняка упростит жизнь в тех случаях, когда несколько версий кода придется поддерживать одновременно. Количество регрессионных ошибок с чистым кодом будет в разы меньше. Также не стоит забывать, что нет ничего более постоянного, чем временное. Возможно, задачи по улучшению этой части кода еще несколько месяцев будут лежать в бэклоге.
Что поможет улучшить ваш код?
Большинство программистов мечтают писать код быстро и максимально красиво, причем так, чтобы все идеально работало с первого раза. Но далеко не каждому удается сделать код не просто работающим, но и понятным. Как же добиться успеха в написании чистого кода? Есть два пути — самоорганизация и командная работа.
Самоорганизация
Рассмотрим несколько возможных способов улучшить индивидуальное качество кода. Эти рекомендации подойдут разработчику любого уровня.
- Инструменты
Уделяйте внимание используемым инструментам, особенно главному из них — среде разработке. Удобный инструмент — это половина успеха. IDE (интегрированная среда разработки) не только дополняет код на лету, но и подсказывает места с запахом, которые стоит привести в порядок. Расширив IDE необходимым плагинами, вы получаете швейцарский армейский нож. Большую часть работы вы проводите именно в этом инструменте — сделайте его максимально удобным и гибким.
Не упустите возможности приобрести свой любимый продукт. Борьба с лицензиями сократит вам часть времени, а официальная поддержка никогда не будет лишней.
В командной работе важна возможность поработать с чужим кодом. Понимать, читать и придерживаться стиля не всегда просто. Работая с чужим кодом, нередко удается узнать о новых подходах к решению нетривиальных задач. Читайте и изучайте код!
Начните разработку небольшого проекта, который решает конкретную проблему. Самостоятельно разработайте архитектуру и реализуйте ее. При этом вы можете установить себе технические ограничения. Например, разработка только с использованием ООП, цикломатическая сложность методов не больше 10, соблюдение всех рекомендаций по разработке в данном языке, осознанное использование шаблонов проектирования и т. д.
Выработайте привычку работать в рамках. Ведь рядом не всегда будет кто-то, кто сможет следить за качеством вашей работы.
Развитие абстрактного мышления
Читайте и пользуйтесь паттернами программирования. Они не привязаны к конкретному языку и помогают решать задачи более эффективно. У вас будет одинаковое понимание дизайна решения задач с другими разработчиками. Вы будете лучше понимать принципы работы сторонних инструментов и библиотек.
Решайте программистские головоломки. Это отличный способ улучшить навыки программирования и узнать тонкости выбранного вами языка.
Анализ решений
Не спешите решать задачи в лоб. Задавайте вопросы старшим разработчикам и самому себе. Всегда важно понимать причинно-следственную связь тех или иных решений. Хорошо понимая проблему, вы сможете эффективно ее решить.
Хороший разработчик — это не ремесленник, который пишет код, а инженер, который совмещает в своей работе прикладные исследования, планирование и проектирование.
Чтение документации
Уметь читать документацию не менее важно, чем читать код. Следующий шаг — научиться писать документацию.
Практика!
Любой опыт лучше, чем его отсутствие.
Командная работа
Большинство задач решается в команде. Очень важно разделять ответственность за качество между ее участниками. Чем больше команда, тем сложнее поддерживать продукт в хорошем состоянии. Рассмотрим несколько подходов удержания кода в вышеуказанных условиях.
- Код ревью
Это простой принцип для понимания и исполнения. По крайней мере два человека, включая автора кода, проверяют код.
Во время проверки кода необходимо учитывать несколько вещей:
- Один из них — проверка, не нарушает ли код правила соглашения о коде. Это процесс, который можно и нужно автоматизировать с помощью статических анализаторов в CI (непрерывной интеграции).
- Другие — это maintainability (легкость в поддержке) кода и обработка ошибок, которые нельзя проверить автоматически.
- Наконец, что не менее важно, код нужно проверить на полноту. Содержит ли этот фрагмент кода весь объем функции, как было задумано?
Суть непрерывной интеграции в том, что она позволяет быстро получить множество отзывов о текущем состоянии кода.
Непрерывная интеграция работает, когда вы следуете двум простым правилам:
- Сборка продукта происходит быстро. Не допускайте медленных сборок. Непрерывная интеграция улучшает качество кода, поскольку обеспечивает быструю обратную связь. Если тесты не пройдены, сборка не удастся, вы мгновенно получаете уведомление.
- Вы добавляете в скрипт сборки статические анализаторы, которые проверяют соглашения о кодировании, повышают качество кода и проверяют безопасность.
Важно иметь список соглашений о кодировании. Но прежде чем вы начнете составлять список, все в команде должны понимать значимость этого соглашения. Не рассчитывайте, что такое соглашение будет принято с первого раза, вас ожидает множество дискуссий.
Составьте список соглашений о кодировании, в которых вы обозначаете то, как переменные должны объявляться, соглашения об именах и т. д. Количество правил, которые вы можете добавить в этот список, не ограничено и может варьироваться. Просто делайте то, что работает для вас и вашей команды. Не стесняйтесь добавлять новые правила в список соглашений, если команде это подходит. Это же касается и удаления соглашений из списка.
После того, как вы получили свой список соглашений о кодировании, крайне важно придерживаться их. Наиболее предпочтительный способ — проверить соглашения о кодировании с помощью статических анализаторов и непрерывной интеграции, поскольку он не требует каких-либо ручных действий.
Качественный код может ускорить долгосрочную разработку ПО. Его можно использовать повторно, и разработчикам не нужно тратить время на исправление старых ошибок. Это также облегчает присоединение новых людей к проекту.
Тесты
Чем меньше ошибок в коде, тем выше его качество. Тщательное тестирование отфильтровывает критические ошибки и гарантирует, что код работает так, как задумано.
Наличие четкой стратегии тестирования важно, когда дело доходит до улучшения качества кода. Как минимум, ваш код должен быть модульным. Еще лучше, если вы хотите использовать и другие способы, например интеграционное или регрессионное тестирование.
Наибольшее количество тестов в программном проекте должны быть юнит-тестами. Они дешевые и быстрые. Существует множество различных инструментов, которые могут помочь вам в создании модульных тестов и отчетов о покрытии кода. Запуск набора тестов и создание отчета о покрытии кода могут выполняться автоматически посредством непрерывной интеграции. Можно даже сделать сборку неудачной, если покрытие кода не соответствует требуемому проценту.
Анализ ошибок
Наличие ошибок в вашем коде, вероятно, неизбежно. Поэтому анализ и способ обработки этих ошибок очень важны. Если вы хотите улучшить свои навыки, важно учиться на собственных ошибках.
Когда возникает ошибка, проанализируйте ее с помощью нескольких вопросов:
- Это ошибка с низким или высоким приоритетом? Если да, она должна быть немедленно исправлена. Если ошибка незначительная и позволяет продукту выполнять задачу без особых проблем, такая ошибка может быть исправлена в следующих итерациях.
- Что пошло не так?
- Почему мы не проверили это (правильно)?
- В каких еще местах это происходит?
- И самое главное — как мы можем предотвратить подобное в будущем?
Конечно, есть инструменты, которые помогут вам отслеживать ошибки. Вы можете выбрать среди представленных на рынке тот трекер, который соответствует вашим потребностям.
Есть несколько метрик, которые вы можете использовать для количественной оценки качества вашего кода. С такой задачей легко справляется SonarQube. Он с легкостью поможет вам собрать все необходимо важные метрики:
Количество дефектов и их серьезность — важные показатели общего качества. Нахождение ошибок можно и нужно автоматизировать, но только отчасти. Код ревью остается в силе, чтоб определить более глубокие ошибки в самой логике кода.
Повторения участков кода
Каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы — принцип DRY (Don’t repeat yourself).
Метрики сложности
Сложность часто измеряется с помощью метрики цикломатической сложности. Это показатель количества линейно независимых путей в коде программы. Существует корреляция между числом цикломатической сложности и частотой дефектов. Теоретически, упрощение кода должно привести к уменьшению количества дефектов.
Наличие необходимых комментариев
Всего нескольких правильно расставленных строк с комментариями, комментария к модулю, классу или методу будет достаточно, чтобы код стал намного понятнее.
Степень покрытия кода тестами
Используется при тестировании программного обеспечения. Она показывает процент исходного кода программы, который был выполнен в процессе тестирования. Задайте планку, ниже которой процентное соотношение ваших тестов не опускается.
Ошибки в коде чем-то сродни углеродному следу. Избежать совсем невозможно, а лишний выхлоп сам по себе не убьет ни человечества, ни окружающей его природы. Тем не менее, снизить негативный эффект от своего пребывания на планете сегодня кажется естественной потребностью. Примерно так же и написание чистого кода оказывается ответственностью каждого разработчика. Независимо от того, какой именно путь вы выберете, необходимо стремиться писать работающий и понятный код.
Хорошо, если удастся не превращать чистоту в фетиш, учитывая срок жизни нашего кода и оценивая целесообразность дальнейших улучшений. Главное помнить о людях: пользователях, которых может подвести внезапный отказ даже небольшой части разработанной нами системы, и инженерах, которым предстоит эту систему поддерживать.
Источник