Рекламное объявление

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

В некотором смысле, написание чистого кода очень похоже на рисование, приготовление пищи или фотографию - это выглядит проще, чем есть на самом деле. Так зачем? Ну, потому что преимущества того стоят:

  • Проблемы становятся легче решать. Как только вы начинаете думать в чистом коде, ваш подход к решению проблем меняется. Вместо грубых решений ваши алгоритмы и дизайн программного обеспечения становятся более элегантными и преднамеренными.
  • Меньше времени тратится на обслуживание. Чистый код легче читать и понимать, поэтому вы тратите меньше времени на выяснение того, что на самом деле делают определенные сегменты, и больше времени на исправление, исправление, расширение и т. Д.
  • Идеи более четко переданы. Если вы работаете с другими программистами, чистый код уменьшает вероятность недопонимания между всеми вами, что также означает меньшее количество ошибок в долгосрочной перспективе.
    instagram viewer

Вот как ВЫ можете начать писать чистый код.

1. Используйте описательные имена

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

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

«Я не великий программист; Я просто хороший программист с отличными привычками ».
- Кент Бек

Что делает переменная с именем DXY на самом деле значит? Кто знает. Возможно, вам придется прочитать весь кусок кода, чтобы перепроектировать его значение. С другой стороны, значение переменной, как distanceBetweenXY мгновенно узнаваем.

То же самое верно для классов и функций. Не соглашайтесь на CalcTan () когда ты можешь пойти на CalculateTangent () или же CalcTangentAngle () вместо.

2. Дайте каждому классу / функции одну цель

Вы когда-нибудь заглядывали в функцию длиной в сотни или даже тысячи строк? Если у вас есть, то вы знаете, как тяжело просматривать, понимать и редактировать. Комментарии могут помочь, но только в ограниченной степени.

«Программирование разбивает одну большую невозможную задачу на несколько маленьких возможных задач».
- Джазвант

Чистый код разбит на атомарные куски. Каждая функция должна стремиться сделать одну вещь, а каждый класс должен представлять одну конкретную концепцию. Это, конечно, упрощение, но в случае сомнений проще - чище.

На практике сложный расчет типа GetCreditScore () может потребоваться разбить на несколько вспомогательных функций, таких как GetCreditReports (), ApplyCreditHistoryAge (), и FilterOutstandingMarks ().

3. Удалить ненужный код

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

«Возможно ли, что программное обеспечение не похоже ни на что другое, что оно должно быть отброшено: что весь смысл в том, чтобы всегда видеть его как мыльный пузырь?»
- Алан Дж. Перлис

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

Дело в том, что эта практика комментирования «резервного кода» устарела из-за контроля версий. Если вы не используете что-то вроде Git или Mercurial, вам нужно начать использовать контроль источника прямо сейчас. Чистый код ждет вас.

Помните, что также важно избегать написания повторяющегося кода, который можно легко реализовать с помощью веб-фреймворка. Вот несколько веб-фреймворки стоит изучать как разработчик 5 веб-фреймворков, которые стоит изучить для разработчиковЗаинтересованы в изучении передовых веб-разработок? Избегайте написания повторяющихся кодов, используйте эти фреймворки для веб-разработки. Подробнее .

4. Читабельность> Умность

Слишком много программистов отождествляют «чистый код» с «умным кодом», как будто сжатие десяти строк в одну является чем-то более чистым. Конечно, это занимает меньше места на экране, но на самом деле это легче понять? Иногда, может быть. Но большую часть времени? Нет.

«Все знают, что отладка в два раза сложнее, чем писать программу. Так что если вы будете настолько умны, насколько это возможно, когда будете писать, как вы будете когда-либо отлаживать его? »
- Брайан В. Керниган

Я думаю, что программисты любят умный код, потому что он кажется разгаданной загадкой или загадкой. Они нашли особый и уникальный способ реализации чего-либо - «ярлык», если хотите, - и он почти служит подтверждением навыков программиста.

Но чтобы написать чистый код, вам нужно оставить свое эго на пороге.

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

5. Сохраняйте согласованный стиль кодирования

у меня есть ничего против хороших учебников по программированию Что делает хороший учебник по программированию?Не все учебники по программированию сделаны равными. Некоторые приносят пользу вам, а другие заканчивают тем, что теряют ваше время. Вот что нужно искать в учебнике по качественному программированию. Подробнее , но одним из недостатков является то, что новички в конечном итоге приобретают широкий спектр противоречивых привычек, особенно в том, что касается стиля кодирования.

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

Но что бы вы ни делали, оставайтесь последовательными!

Красиво лучше, чем безобразно.
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложный лучше, чем сложный.
Квартира лучше, чем вложенная.
Разреженный лучше, чем плотный.
Читаемость имеет значение.
- Тим Питерс, Дзен питона

Если вы собираетесь использовать camelCaseNaming для переменных не фальсифицируйте это underscore_naming. Если вы используете GetThisObject () в одном месте, не ходите с FetchThatObject () где-нибудь еще. И если вы смешиваете табуляции и пробелы, вы заслуживаете того, чтобы убрать клавиатуру.

Решите, что вы собираетесь делать с самого начала, и придерживайтесь этого до конца. Некоторые языки, такие как Python и C #, имеют общепринятые руководства по стилю, которым вы можете следовать.

6. Выберите правильную архитектуру

Существует множество различных парадигм и архитектур, которые вы можете использовать для создания своих проектов. Обратите внимание, как этот совет о выборе верно один для ваших нужд, а не о выборе Лучший один там. Здесь нет «лучшего».

«Без требований и дизайна программирование - это искусство добавления ошибок в пустой текстовый файл».
- Луи Сригли

Например, шаблон Model-View-Controller (MVC) сейчас очень популярен в веб-разработке, потому что он помогает поддерживать ваш код организованным и разработанным таким образом, чтобы свести к минимуму затраты на обслуживание.

Точно так же шаблон Entity-Component-System (ECS) сейчас очень популярен в разработке игр, потому что он помогает модулировать игровые данные и логику таким образом, чтобы упростить обслуживание, и в то же время создавать код, который легче читать.

7. Овладеть идиомами языка

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

Рассмотрим Python, Java и JavaScript. Все они чрезвычайно отличаются друг от друга в той степени, которая требует другой способ мышления в зависимости от того, какой язык вы выберете.

«Язык, который не влияет на то, как вы думаете о программировании, не стоит знать».
- Алан Дж. Перлис

В то время как Python - это все о компактном коде и типизированном кодировании, Java больше ориентируется на многословность и ясность. У каждого языка есть идиомы (такие как списки в Python), которые поощряют определенный способ кодирования. Ты бы хорошо выучил их.

Есть также «антишаблоны», о которых нужно беспокоиться, которые по сути являются неоптимальными шаблонами проектирования, которые приводят к неэффективному, ненадежному или иным образом плохому коду. Изучите и изучите все распространенные анти-паттерны, связанные с выбранным вами языком.

8. Изучите Кодекс Мастеров

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

Очевидно, что вы не можете просто зайти в штаб-квартиру Microsoft и посмотреть на их проекты, но вы всегда можете просматривать известные проекты с открытым исходным кодом Как просмотреть и отредактировать исходный код приложения с открытым исходным кодомХотя открытый исходный код может быть хорошим выбором, вам также необходимо инвестировать в правильное сообщество. GitHub - одно из лучших мест для этого, не только из-за огромного количества ... Подробнее . Не знаете с чего начать? Попробуйте продемонстрировал проекты на Github.

«Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям ».
- Мартин Фаулер, Рефакторинг: улучшение дизайна существующего кода

В конце концов, это одна из причин почему существуют проекты с открытым исходным кодом Почему люди участвуют в проектах с открытым исходным кодом?Разработка с открытым исходным кодом - будущее программного обеспечения. Это отлично подходит для пользователей, потому что программное обеспечение с открытым исходным кодом обычно доступно бесплатно и часто безопаснее в использовании. Но что заставляет разработчиков предоставлять код бесплатно? Подробнее Так что другие могут учиться у них. И если вы решили внести свой вклад в такой проект, это может ускорить процесс обучения 5 идей проекта, которые помогут вам научиться программированию быстрееЕсть несколько способов облегчить процесс обучения программированию. Запачкайте руки и учитесь быстрее с побочными проектами, которые вы можете начать в любое время. Поиграйте с этими пятью. Подробнее .

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

9. Пишите хорошие комментарии

«Пишите хорошие комментарии» - самый старый совет в мире программирования. Фактически, как только новички знакомятся с комментариями, им в значительной степени рекомендуется комментировать так часто, как они могут.

Но кажется, что мы слишком далеко качнулись в противоположном направлении. В частности, новички склонны переоценивать - описывать вещи, которые не нужно описывать, и упускать суть того, что на самом деле является «хорошим комментарием».

«Всегда пишите код, как будто парень, который в конечном итоге будет поддерживать ваш код, будет сильным психопатом, который знает, где вы живете»
- Джон Вудс

Вот хорошее эмпирическое правило: существуют комментарии, объясняющие ПОЧЕМУ фрагмент кода, а не ЧТО код делает на самом деле. Если код написан достаточно четко, он не требует пояснений относительно того, что он делает - комментарий должен пролить свет на намерение, почему он был написан.

Комментарии могут быть полезны для предупреждений (т. Е. «Удаление этого нарушит A, B и C»), но по большей части должно раскрыть вещи, которые нельзя сразу извлечь из кода (т. е. использовать этот параметр, потому что X, Y и Z»).

10. Refactor, Refactor, Refactor

Так же, как редактирование является частью процесса написания, рефакторинг является частью процесса кодирования. Отвращение к рефакторингу - это самый быстрый способ получить не поддерживаемый код, поэтому во многих отношениях это действительно самый важный совет для рассмотрения.

Короче говоря, рефакторинг - это просто модный термин для очистки кода без ущерба для его реального поведения.

«Всякий раз, когда мне нужно подумать, чтобы понять, что делает код, я спрашиваю себя, могу ли я реорганизовать код, чтобы сделать это понимание более очевидным».
- Мартин Фаулер, Рефакторинг: улучшение дизайна существующего кода

Одна мудрость, которая застряла со мной, это поговорка: «Не комментируйте плохой код. Перепиши это. Как объясняет Фаулер в приведенной выше цитате, если код когда-либо чувствует себя настолько запутанным, что вам нужно его комментировать, возможно, вам действительно нужно реорганизовать его.

Кроме того, когда вы редактируете кусочки кода здесь и там по всему вашему проекту, всегда оставляйте код в лучшем состоянии, чем когда вы впервые его нашли. Это может показаться неудобством в данный момент, но это окупится в долгосрочной перспективе (и может даже предотвратить психическое истощение Программирование выгорания: как вернуть потерянную мотивациюНаписание всех этих строк кода может истощать физически и эмоционально. Все, что вам нужно, - это осознание того, что мотивация может быть восстановлена Подробнее ).

Всегда есть что-то новое для изучения

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

Некоторые люди не имеют того, что нужно, и в конечном итоге бросить программирование навсегда 6 признаков того, что вы не должны быть программистомНе каждый хочет быть программистом. Если вы не совсем уверены, что должны быть программистом, вот некоторые признаки, которые могут указать вам верное направление. Подробнее - и это хорошо, потому что есть много другие технические задания, не связанные с программированием Кодирование не для всех: 9 технических заданий, которые можно получить без негоНе расстраивайтесь, если вы хотите стать частью технической области. Есть много рабочих мест для людей без навыков кодирования! Подробнее . Но для всех остальных чистый код - это то, к чему абсолютно стоит стремиться, даже если на это уходит целая жизнь.

Джоэл Ли имеет степень бакалавра в области компьютерных наук и более шести лет профессионального опыта написания. Он главный редактор MakeUseOf.