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

Без сомнения, программирование сложно

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

В некотором смысле, написание чистого кода очень похоже на рисование, готовку или фотографию

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

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

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

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

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

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

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

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

То же самое верно для классов и функций. Не соглашайтесь на 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

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

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

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

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

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

).

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

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

Некоторые люди не имеют того, что нужно, и в конечном итоге бросают программирование навсегда

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

,

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

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

Ссылка на основную публикацию
Adblock
detector