2009-05-02 2 views
4

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

  • Хранить большие блоки кода в небольших кусков подпрограмм/методов/классов

  • Убедитесь, что каждая процедура имеет одну точку выхода. Выйдите из цикла с логикой в ​​верхней части цикла, а не с разрывами или некоторым типом ключевого слова «exit loop».

  • Избегайте Глобалы

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

... и один я играл с в последнее время:

  • Попробуйте заменить, если/ветвления/выберите случаи с различными сигнатурами метода (полиморфизм) чистый код переговоров на YouTube
+2

Здесь нет никаких вопросов. Любая достойная книга по рефакторингу принесет вам огромное удовольствие. –

+1

(Голосов, чтобы закрыть) Этот «вопрос» слишком туманный и открытый. Проверьте весь тег [best-practices] на этом сайте. – Brian

+3

Должно ли это быть вики-сообществом сообщества? –

ответ

1

Yup, те хорошие.

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

Кроме того, прочитайте код, особенно известный хороший код.

3

"один, два, много".

Удаленная дикая популяция в каком-то отдаленном уголке планеты не имеет слов на его языке, чтобы считать за пределами двух. После двух слов есть слово «много». Мой предыдущий босс проповедовал эту фразу, чтобы сохранить количество аргументов в рутине. Я с ним согласен.

«Не повторяться (DRY)»

если вы сказать то же самое в двух местах, то у вас есть проблема, и вы должны реорганизовать. Рано или поздно два (или более) места будут десинхронизированы.

"Keep It Simple, Stupid (ПОЦЕЛУЙ)"

Не overdesign.

+1

Я изначально слышал «один, два, бесконечность» и его варианты как объяснение того, когда писать инструмент для автоматизации задачи. –

+0

Это отличная цитата, спасибо за обмен! =) –

1

-keep большие блоки кода в небольших кусках подпрограмм/методов/классов

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

Убедитесь, что каждая рутина имеет одну точку выхода.Выйдите из цикла с логикой в ​​верхней части цикла, а не с разрывами или некоторым типом ключевого слова «exit loop».

Это не обязательно чище. Это только упрощает доказательство правильности функции. См. Should a function have only one return statement? для более подробной информации.

Избегайте Глобал

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

5

Если вы еще не прочитали «Код завершен», я настоятельно рекомендую вам прекратить чтение «Переполнение стека» на несколько дней (или, как бы долго оно ни потребовалось), и вместо этого прочитать это.

alt text http://ecx.images-amazon.com/images/I/51seLiYuURL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg

3

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

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

0

Часто, чистый код связан с короткими функциями или улучшенным отступом. Поэтому не попадайте в эту ловушку. Проводите значительное время в разработке классов. Есть хорошие принципы, такие как SOLID principles, которые позволят вам проектировать и создавать хорошие осмысленные классы. Затем идет выбор соответствующих шаблонов проектирования для моделирования поведения ваших классов. Конечно, всегда помните о том, чтобы следовать принципу «держать его в покое». Наконец, убедитесь, что в вашей архитектуре имеется достаточное покрытие кода для сложных функций. Следуя всем этим, вы можете написать чистый код. Вот хороший list of books, который я рекомендую своим друзьям и коллегам.

2

В Comp Sci я слышал что-то, что всегда застрял со мной:

": 0, 1, и бесконечность в программировании Есть только 3 номера."

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

0

Хотя, возможно, не совсем тот тип ответа, который вы ищете Я бы сказал, что компонентный дизайн имеет тенденцию поддаваться элегантному коду посредством элегантной архитектуры. Размышление о том, как разделить код, будет применять структуру и порядок для хаотического процесса (иногда). Элегантность кода может быть расстроена впереди, перед реализацией (вам лучше быть тщательной), или искал после первоначальной интеграции посредством рефакторинга и упрощения. Если вы идете с моделью на основе компонентов, то реорганизация интегральных частей вашего приложения становится гораздо более управляемой задачей - пока вход и выход не будут изменены без изменений в процессе благоустройства/упрощения. Сосредоточение внимания на общей структуре приложения для меня стало для элегантного кода. Трудно добиться последнего без первого, если ваше приложение не имеет малой сферы.

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

Смежные вопросы