Грамотное программирование основывается на трех простых операторов:
- Программисты должны написать код, который компьютер может понять
- Программисты должны написать документацию, которую люди могут понять
- Если это отдельные документы, которые он неизбежно, что они будут несинхронизированы
Действительно, по моему опыту, № 2 обычно получает короткий стрит. Я потерял счет того, сколько раз QA сказал мне: «Док говорит это, но код делает это: неправильный код или устаревший документ»? В этом отношении я не ожидаю, что мое рабочее место будет необычным. Кроме того, в одном из моих ранних проектов я старался держать документы в актуальном состоянии, так как назад и вперед с заинтересованными сторонами привели к изменению требований. Это было достаточно трудоемким, и мне было сказано, что менеджмент должен прекратить возиться с документами и просто заставить проект работать. С тех пор мы перешли к менее трудоемким процессам документации (слава богу!).
У нас есть инструменты для проверки кода, где, когда мы вносим изменения в код, несколько человек могут видеть изменения, четко очерченные и комментарии могут быть сделаны, задавать вопросы, объяснять вещи, предлагая улучшения. Если бы код был написан с использованием методов грамотного программирования, большая часть этого вопроса/ответа была бы суперплотной, потому что объяснение было бы включено.
Значительная часть современного программирования заключается в том, что ваш код должен быть собственной документацией. Многие эксперты утверждают, что если вам нужно объяснить свой код в комментариях, вы должны, вероятно, переформатировать код (изменение имен переменных/функций и т. Д.), Чтобы комментарии не использовались. Я считаю, что это здорово в теории, менее практично в реальности. Я имею в виду, что когда я использую библиотеки, созданные/поддерживаемые кем-то другим, их выбор имен методов/функций не всегда интуитивен для меня. Например:
Set<String> statesWeCareABout = new HashSet<String>(Arrays.asList(new String[] { "one", "two", "three" }));
Set<String> statesWeFound = <some function>;
statesWeFound.retainAll(statesWeCareAbout);
Если вы не знакомы с Сетом <> или HashSet <>, вы можете не знать, что .retainAll() означает дать мне пересечение двух, с результатом в модифицированном Set <>.
Наконец, грамотное программирование обычно позволяет вам сломать вещи, чтобы вы могли объяснить этот фрагмент кода изолированно, а затем вставить его в этот другой фрагмент кода. Это больше соответствует тому, как работает человеческое понимание. Объясните мне, как это работает, а затем опираясь на это понимание, чтобы объяснить большую картину. Компьютеры действительно не заботятся; вы можете написать одну функцию с 1000 строками кода, и у нее нет проблем постигать все это. Бог поможет вам, если вы, как разработчик, должны это поддерживать.
И это, действительно, является аргументом в пользу Грамотного программирования. Код должен быть сохранен, будь то исправлены ошибки или добавлены функции. И если он не может быть понят кем-то другим, позже, эффективным образом, он будет заменен. В этом мире есть способ много писать код.Грамотное программирование облегчает чтение и понимание, что делает его более долговечным и долговечным.
И действительно ли у нас есть время, чтобы продолжать изобретать колесо?
Хммм .. так что «ключ» здесь - это переплетение различных кусков и вращение волшебной паутины здесь, что ближе к тому, как думает программист? – 2009-08-08 14:55:43
@Amit - в высшей степени, да. Обычно мы пишем исходный код в порядке, который требуется нашим компиляторам; грамотное программирование - это писать исходный код, наиболее понятный другим разработчикам. – Bevan
@Amit: Не всегда ближе к тому, как они «думают». Но всегда к самому ясному объяснению того, что программа * * и * делает *. * * Мышление * не имеет значения. Ясность и полнота изложения важны. –