Подтвердить что ты не робот

Запись поддерживаемого кода

Каков самый важный фактор для написания поддерживаемого кода (независимый от языка)?

4b9b3361

Ответ 1

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

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

Хорошие комментарии не должны быть длинными, но они должны быть полезными.

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

Ответ 2

Разделение проблем (каждый метод делает одно) - это останавливает код спагетти.

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

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

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

Ответ 3

Автоматические модульные тесты.

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

Ответ 4

Хорошая абстракция

Ответ 5

Тестирование устройства выполняется вниз. Если вы unit test ваш код от get go, то у вас будет набор тестов, который вы можете запустить, чтобы проверить правильность кода при каждом изменении.

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

Ответ 6

Хороший дизайн. Ничто не может спасти плохой дизайн.

Ответ 7

Нахождение 1-го или 2-го уровня поддержки программного обеспечения, которое вы только что написали, через год или два после выпуска.

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

Ответ 8

Хорошие имена методов

Ответ 9

Существует тенденция писать код, думая, что компьютер - ваша аудитория.

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

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

Ответ 11

Нет "одного наиболее важного фактора", это сочетание нескольких факторов, как указано выше.

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

Ответ 12

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

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

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

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

Ответ 13

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

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

http://mindprod.com/jgloss/unmain.html

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

Ответ 14

Я бы сказал, что самый важный фактор - СУХОЙ. glenatron Упомяните об этом уже на его ответе среди других факторов, но я думаю, что самый важный.

Ответ 15

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

Ответ 16

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

  • Код для людей - компьютер сделает все, что вы ему скажете; код, чтобы люди могли понять ваш код - кто знает, что это может быть у вас через 6 месяцев!

Ответ 17

Хорошие комментарии.

Ответ 18

Непрерывный рефакторинг

Ответ 19

Последовательность.

Ответ 20

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

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

Ответ 21

Много пробелов. - Код высокой плотности трудно понять. Если у вас более 6 строк с пустой строкой, то эта группа, вероятно, не является сплоченной мыслью/идеей/операцией.

Хорошие имена переменных - пояснительные, но кратким. Огромные имена переменных так же плохи, как крошечные.

Ответ 22

Без сомнения, писать код, предназначенный для чтения другими людьми. Это включает в себя избегание гольфа, тайный синтаксис и продуманные имена переменных, которые что-то означают. Вы можете полностью избежать комментариев, если код достаточно чист, IMO.\

[Выбор языка с встроенным OO, а не скрепленным, также помогает]

Ответ 23

Для меня написание тестового кода (checkout Google test blog) - лучший поддерживаемый код

Ответ 24

Я уже голосовал Matt ответил "Хорошая абстракция", но я хотел что-то добавить.

Документирование всего этого об объяснении вещей. Я все сторонник Doxygen и других инструментов автоматической документации, но сырые списки функций в API просто лучше, чем ничего.

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

Ответ 25

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

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

Ответ 26

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

Ответ 27

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

Ответ 28

Хорошие комментарии могут сделать даже самый худший код спагетти 10x проще в обслуживании.

Ответ 29

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

Ответ 30

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

Если вы попросите двух, второй, безусловно, будет модульным тестом. Это был трудный выбор между ними.