2009-06-05 6 views
23

Роберт К. Мартин предлагает в первой главе своей книги «Clean Code» несколько определений «чистого кода» от разных известных специалистов по программному обеспечению. Как вы определяете чистый код?Определение «чистый код»

ответ

36
  • Легко понять.
  • Легко модифицировать.
  • Легко проверить.
  • Правильно работает (предложение Кента Бек - очень правильно).

Это то, что важно для меня.

+7

Он также должен работать правильно. В противном случае это кажется мне прекрасным определением. –

+1

Хорошо, я добавил его к ответу. – Ree

1

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

17

Код, который я не боюсь изменять.

1

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

10

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

+0

Я бы сказал, что минимальное использование комментариев, а не вообще: (1) невозможно иметь встречный интуитивный алгоритм; комментарий может быть использован для того, чтобы пользовательские (2) комментарии могли быть использованы для разбиения кода на логические разделы, чтобы у читателя был краткий обзор. –

+0

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

1

Непонятный код Haskell. (Не совсем.)

2

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

Простейшие пример именования:

if (filename.contains("blah")) 

против

if (S_OK == strFN.find(0, "blah")) 

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

1

Многоразовый код также важен. Таким образом, важно не только качество кода, но и то, что вы делаете. Пример: бизнес-логика в контроллер - бесполезный код