В этом вопросе я спросил, мешает ли вам плохой писатель писать хороший код. Многие из ответов начинались с «это зависит от того, что вы подразумеваете под хорошим кодом».
Похоже, что термины «хороший код» и «плохой код» очень субъективны. Поскольку у меня одна точка зрения, она может сильно отличаться от точки зрения других.
Так что значит писать «хороший код»? Что такое "хороший код"?
code-quality
gablin
источник
источник
Ответы:
Хороший кодер похож на хорошего игрока в пул.
Когда вы видите профессионального игрока в пул, вы сначала не будете впечатлены: «Конечно, они получили все шары, но у них были только легкие удары!» Это потому, что, когда игрок в пул делает свой удар, она не думает о том, какой шар попадет в какой-то карман, она также думает о том, где закончится биток . Настройка для следующего выстрела требует огромных навыков и практики, но это также означает, что это выглядит легко.
Теперь, перенося эту метафору в код, хороший кодер пишет код, который выглядит так, как будто это было легко и просто сделать . Многие примеры Брайана Кернигана в его книгах следуют этой схеме. Часть «хитрости» заключается в правильном осмыслении проблемы и ее решении . Когда мы недостаточно хорошо понимаем проблему, мы, скорее всего, усложним наши решения и не сможем увидеть объединяющие идеи.
При правильном осмыслении проблемы вы получаете все остальное: удобочитаемость, ремонтопригодность, эффективность и правильность. Поскольку решение кажется таким простым, комментариев, скорее всего, будет меньше, поскольку в дополнительных объяснениях нет необходимости. Хороший кодировщик также может видеть долгосрочное видение продукта и формировать его концептуализации соответственно.
источник
( оригинал )
РЕДАКТИРОВАТЬ: Основная идея заключается в том, что «качество кода» не может быть введено в правила, так же, как вы не можете включить «хорошее искусство» или «хорошую поэзию» в правила, так что вы можете позволить компьютеру определить «да, хорошее искусство» или "Нет, плохая поэзия". В настоящее время единственный способ - понять, насколько легко понять код для других людей.
источник
На самом деле нет хороших критериев, кроме как быстро вы можете понять код. Вы делаете свой код хорошо выглядящим, находя идеальный компромисс между краткостью и удобочитаемостью.
«WTF за минуту» (выше) - правда, но это всего лишь следствие более общего правила. Чем больше WTF, тем медленнее понимание.
источник
RemoveCustomer
метод на самом деле удаляет кутомер без провала. Вы можете часами делать так, чтобы это выглядело красиво, но это не значит, что на самом деле это работает. «Как быстро вы понимаете код» - не единственный критерий «хорошего кода» - вот что я говорю.Вы знаете, что пишете хороший код, когда ...
Как вы оцениваете, хорош ли код ...
Хороший код работает, когда он должен. Хороший код можно легко изменить, когда это необходимо. Хороший код можно использовать повторно для получения прибыли.
источник
Код, который
без ошибок
многоразовый
независимый
менее сложный
хорошо задокументированы
легко изменить
называется хорошим кодом.
Источник: MSDN
источник
Это кажется знакомым?
Пожалуйста, посмотрите остальное здесь .
источник
кроме естественных критериев качества кода (минимум копирования / вставки, отсутствие спагетти и т. д.), хороший промышленный код всегда должен выглядеть немного наивным, слишком многословным, как
в отличие от
источник
do_not_create = false
означает ли «передатьfalse
какdo_not_create
аргумент, чтобы он был создан» или «передатьfalse
какdo_create
аргумент, чтобы он не был создан»? На языке, где вы можете использовать имена аргументов, я бы предпочелcache.get (key:i, create: false); i += 1;
.Возможно, поможет ответ, иллюстрирующий обратное (плюс это повод, чтобы получить здесь XKCD ).
Хороший код
Примеры включают
источник
Я просто пойду с "ремонтопригодным"
Весь код должен быть сохранен: нет необходимости делать эту задачу более сложной, чем необходимо
Если какой-либо читатель не понимает это простое требование или нуждается в его четком изложении, то этот читатель не должен писать код ...
источник
Хороший код будет отличаться для каждого человека, и язык, с которым он работает, также влияет на то, что можно считать хорошим кодом. Обычно, когда я подхожу к проекту, я ищу следующие вещи:
Помимо всего этого, имеет ли смысл дизайн приложения в целом? Код, находящийся в приложении, может быть лучшим в мире, но работать с ним все равно будет сложно, если общий дизайн приложения не имеет смысла.
источник
Позвольте мне не согласиться на удобочитаемость. Нет, не полностью: хороший код должен быть читабельным, и этого можно легко достичь с помощью достаточного количества комментариев.
Но я рассматриваю два вида WTF: те, в которых вы задаетесь вопросом, продвинулся ли программист дальше программирования 101, и те, в которых вы абсолютно не понимаете, насколько гениален код. Поначалу некоторый код может выглядеть очень странно, но на самом деле это очень изобретательное решение сложной проблемы. Второе не должно учитываться в WTF-метре, и его можно избежать с помощью комментариев.
Очень читаемый код может быть очень, очень медленным. Менее читаемое решение может дать многократное улучшение скорости. R - отличный пример языка, где это часто бывает правдой. Каждый любит избегать петель там как можно больше. В общем, я бы посчитал самый быстрый код лучшим, хотя он менее читабелен. То есть, если улучшение является существенным, конечно, и достаточно комментариев, чтобы объяснить, что делает код.
Более того, управление памятью может иметь решающее значение во многих научных приложениях. Код, который очень читабелен, имеет тенденцию быть неаккуратным в использовании памяти: создается только больше объектов. В некоторых случаях разумное использование памяти делает код снова менее читабельным. Но если вы, например, манипулируете гигабайтами последовательностей ДНК, память является решающим фактором. Опять же, я считаю код с меньшим объемом памяти лучшим кодом независимо от читабельности.
Так что да, читабельность важна для хорошего кода. Я знаю адагиум Уве Лиггиса: мышление болит, а компьютеры дешевы. Но в моей области (статистическая геномика) время вычислений в неделю и использование памяти более 40 Гб не считаются ненормальными. Так что улучшение в два раза быстрее и вдвое меньше памяти стоит намного больше, чем этот дополнительный бит читаемости.
источник
Что касается меня ... Я знаю, что пишу хороший код, когда появляется коллега, который работает над другим проектом и может подключиться и понять, что я делаю, без прохождения каждого блока кода. и показывая, что он делает.
Вместо того чтобы сказать: «Подожди минутку, что ?!» Он говорит: «О, хорошо, я вижу, что ты там сделал».
Хороший код также не имеет много хитрых обходных путей или «хаков». Строки, когда, когда вы пишете это, вы также говорите себе: «Я знаю, что это не очень хороший способ сделать это, но я просто должен сделать это сейчас. Я напомню сам, чтобы улучшить это позже ... »
источник
Есть много функций «хорошего» кода, но наиболее важными, IMHO, являются удобочитаемость и удобство обслуживания.
Ваш код будет содержать ошибки, вероятно, будет расширен и использован повторно, и в какой-то момент его нужно будет повторно учесть - даже если вы повторно его посещаете, есть вероятность, что вы не будете иметь ни малейшего понятия, какого черта Вы сделали, во-первых, сделать себе одолжение и не ставить никаких препятствий.
Конечно, используйте этот сложный, но очень эффективный алгоритм, но убедитесь, что вы потратили немного дополнительного времени на его документирование, но в остальном сделайте свой код ясным и последовательным.
источник