Творчество

10 советов по написанию чистого и лучшего кода

10 советов по написанию чистого и лучшего кода

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

10. Refactor, Refactor, Refactor

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

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

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

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

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

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

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

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

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

Насколько важен для вас чистый код? Какие правила вы соблюдаете, чтобы ваш код был чистым и организованным? Есть еще какие-то кусочки мудрости, которыми можно поделиться? Дайте нам знать в комментариях ниже!

Похожие посты
Творчество

Добавьте комические речевые воздушные шары и текстовые пузыри к своим фотографиям

Творчество

Определение растрового и растрового изображения

Творчество

Использование GIMP Rotate Tool

Творчество

Интернет-принтеры для проектов графического дизайна