Советы по созданию чистого, элегантного кода - PullRequest
4 голосов
/ 02 мая 2009

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

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

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

  • Избегайте глобалов

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

... и тот, с которым я недавно играл:

  • Попробуйте заменить if / branching / select падежами на разные сигнатуры методов (полиморфизм) Чистый код говорит на YouTube

Ответы [ 9 ]

15 голосов
/ 02 мая 2009
5 голосов
/ 02 мая 2009

Если вы не читали Code Complete, я настоятельно рекомендую вам прекратить чтение переполнения стека на несколько дней (или сколько угодно времени) и прочитать его вместо этого.

альтернативный текст http://ecx.images -amazon.com / images / I / 51seLiYuURL._BO2,204,203,200_PIsitb-sticker-arrow-click, TopRight, 35, -76_AA240_SH20_OU01_.jpg

3 голосов
/ 02 мая 2009

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

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

3 голосов
/ 02 мая 2009

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

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

"Не повторяйся (СУХОЙ)"

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

"Будьте проще, глупый (KISS)"

Не переусердствуйте.

2 голосов
/ 02 мая 2009

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

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

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

1 голос
/ 02 мая 2009

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

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

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

Это не обязательно чище. Это только облегчает доказательство правильности функции. См. Должна ли функция иметь только один оператор возврата? для получения более подробной информации.

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

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

1 голос
/ 02 мая 2009

Да, это хорошие.

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

Также читайте код, особенно известный хороший код.

0 голосов
/ 13 февраля 2013

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

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

0 голосов
/ 02 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...