Код для компьютеров или для людей?

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

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

С учетом этого, что может сделать этот программист, чтобы сделать код более легко читаемым людьми?

  • Соглашения об именах? (Джоэл имеет достаточную сумму, чтобы сказать об этом)

  • Структура/макет кода? (пожалуйста, ради любви к Богу, не попадайте в дискуссию о размещении {)

  • Фразировка

    ? (Можно ли написать код, который больше походит на английский язык)

Есть ли хорошие статьи вне Joel's.

Ответ 1

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

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

Ответ 2

Да.

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

Ответ 3

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

- от "Структура и интерпретация компьютерных программ" Абельсона и Суссмана

Ответ 4

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

Однако, когда дело доходит до поддержания кода, чисто написанный код для людей будет очень полезен. С точки зрения бизнес-кейса, чем короче, тем лучше понимать код для нового программиста, тем меньше денег требуется, чтобы привести нового человека в скорость. Поэтому более чистый код имеет большую ценность. Какой момент, когда нечитаемый код работает на 5% быстрее, когда программисту понадобится 100% времени? В конце концов, программисты стоят совсем немного денег.

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

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

Пишите для людей, а не для машины.

Ответ 5

<sarcasm> Код должен считываться только машиной. Если конечный результат полностью соответствует потребностям пользователя, не имеет значения, как выглядит код. </sarcasm>

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

Не могли бы вы построить дом с планом, написанным на обратной стороне салфетки, или выбросить чертежи после того, как вы закончите строительство дома, которое вы, возможно, захотите добавить в один день?

Ответ 6

Roedy Green написал обширный справочник: Неподдерживаемый код.

"С учетом этого, что может программист делает, чтобы сделать код более легким читать люди?"

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

Цитата из раздела общих принципов:

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

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

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

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

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

Ответ 8

Мой взгляд на это немного тангенциальный - это не о читаемости, а о ремонтопригодности.

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

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

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

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

Ответ 10

Отсутствует элемент: комментарии.

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

Ответ 11

Я считаю, что все относительно.

Когда вам нужно изменить код, код для вас, когда он выполнил его для машины.

Если код функционирует, он может быть прочитан.

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

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

Но в конечном итоге код должен быть превращен в набор инструкций для машины.

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