Программирование во многом похоже на писательство — начинать нужно с работы.несовершенный первый набросок«Начните, а затем пройдите две или три ревизии, чтобы решить проблемы в первом черновике одну за другой.
Инженеры наверняка посмеются над тем, что их легкомысленно сравнивают с «писателями», но кто написал утреннюю документацию? Разве вы не «пишите код»?
Разработчики программного обеспечения выполняют самые творческие виды инженерной работы. В конце концов, у инженеров-программистов больше собственного творчества при создании приложений, чем у инженеров-строителей, строящих мосты.
Работа в творческой индустрии означает, что вы можете многому научиться у писателей, которые пишут. Те, которые часто рекомендуются для решения проблем с письмом, также являются одними из лучших советов по письму.
Позвольте мне порекомендовать вам метод «несовершенного первого черновика», потому что он делает вас более эффективным «кодером».
Трюк «Несовершенный первый набросок»
Трюк с «несовершенным первым наброском» настолько распространен, что даже если вы не читали ни одного из блогов в Интернете, вы, вероятно, уже давно слышали его на уроках английского языка.
Смысл «несовершенного первого черновика» в том, что даже если ваш первый черновик написан плохо, вам нужно закончить только первый черновик, потому что любой первый черновик лучше, чем пустая страница без ничего.
Редактировать собственную работу гораздо проще, чем писать ее с нуля, поэтому стоит сразу попробовать что-то написать (что бы это ни было), лишь бы ваш код работал.
Другими словами, собираетесь ли вы сегодня к обеду написать 100 строк (фактически) несовершенного кода или 0 строк идеального кода?
Конечный результат, конечно же, состоит в том, что у вас будет 50 идеальных строк кода любым из вышеперечисленных способов. Но написание «несовершенного первого черновика» имеет психологические преимущества:У вас будет большее чувство выполненного долга с меньшим стрессом.
** Вам понравится программировать! **Есть ли что-нибудь важнее этого?
С чего начать создание первого черновика
Я предпочитаю начинать кодирование с «простого первого черновика», потому что «несовершенный первый черновик» кажется отрицанием моих способностей к кодированию.
Вы хотите быть «плохим программистом», который пишет «плохой код», потому что вы читали советы о написании «несовершенных первых черновиков»?
Нет, вы хотите быть «успешным программистом» и писать «отличный код», потому что вы следуете трюку кодирования с «простого первого черновика».
Если вы когда-либо копировали пример кода, а затем адаптировали его для собственного использования, вы действительно научились уловке «простых первых черновиков».
При использовании примеров кода вам неизбежно придется вносить множество изменений, но ключ в том, чтобы сначала заставить код работать, а затем сразу же улучшать его.
Независимо от того, являетесь ли вы новичком в кодировании или экспертом, вы можете использовать подход «простой первый черновик» к любой задаче программирования.
Почему «Простой первый черновик» так полезен
Когда вы пишете работающий код, вы чувствуете удовлетворение, что улучшает ваше мышление. Простой код с большей вероятностью будет успешным при первом написании.
Кроме того, простой код легко написать, что экономит время. Действительно, это может показаться повторяющимся и многословным, и ваш остроумный мозг будет умолять вас найти «лучшее» решение, более краткое и эффективное.
игнорируй это
Хитрость заключается в том, чтобы выпить, когда вы почувствуете эти чувства, а затем пойти по легкому пути. Как только код будет запущен, вы проведете его рефакторинг — после того, как у вас будет рабочая версия, вы сможете усложнить свои идеи. Но до тех пор держите все как можно проще.
тренер по письмуAugust Birchназовите это "поэтапное написание”: напишите весь контент, затем сразу же отредактируйте и отшлифуйте его, чередуя доводку и доработку.
Но на данный момент программирование и написание различаются: поскольку код должен выполняться успешно, разработчик знает, когда первый черновик «достаточно хорош». Когда ваш код работает, это сигнал к тому, чтобы сразу же пересмотреть «простой первый набросок» и несколько раз доработать его, прежде чем переходить к следующему шагу.
Для тех, кто только учится кодировать, этот подход улучшает два ключевых навыка: написание работающего кода и улучшение кода без нарушения обычных операций.
простой пример кода
Недавно я был наставником младшего инженера через платформу LinkedIn, который боролся со слишком сложной задачей кодирования. Хотя такие задачи по кодированию становятся менее полезными, когда вам нужно попрактиковаться в реальном проекте, это отличный пример того, как написать «простой первый черновик».
Поскольку задача сложная, он намерен попытаться написать комплексное решение. Давайте посмотрим на этот вызов:
«Напишите функцию
addWeirdStuff, функция будетarrayTwoСумма всех нечетных чисел в иarrayOneДобавьте каждый элемент ниже 10 в .По аналогии,
addWeirdStuffтакже нужноarrayTwoСумма всех четных чисел в иarrayOneДобавьте те элементы, которые равны или больше 10.Также: если
arrayOneэлементы в сarrayTwoПри добавлении элементов больше 20 необходимо добавить еще 1.
Стоит отметить, что, как и в реальной жизни, ему досталась неполная спецификация: функцияaddWeirdStuffдолжен вернуть новый массив, содержащийarrayOneтак же какarrayTwoпункт.
Он впервые попытался использоватьforЦикл, чтобы решить проблему, но в конечном итоге безуспешно. Это сложная когнитивная задача, которая должна быть вызовом для рабочей памяти человека (другое название кратковременной памяти), и он ничего не может с этим поделать.
Этот парень однажды связался со мной, чтобы решить еще одну кодовую загадку, потому что он случайно вставилreturnзаявление в комплексеforв цикле. Он не готов писать чистый код.
Я сказал ему, что ему нужно использовать два отдельныхforцикл, для простоты он должен использоватьfor…ofездить на велосипеде. Вот код JavaScript и тест, чтобы проверить, работает ли его код:
Этот код уродлив и плохо написан, но он работает! И это супер читабельно, особенно для новичков, которые только начинают бороться с основными понятиями.
Следующим шагом будет уточнение этого «простого первого наброска».
время реконструкции
Рефакторинг, любите вы его или ненавидите, — это процесс редактирования и пересмотра только для писателей. В программировании и других видах письма легче переделывать, если писать текст самому (особенно, если делать это сразу).
Сначала используйте простой язык, чтобы уменьшить сложность текста, а затем сразу же редактируйте его. Этот метод работает для всех типов письма, включая кодирование.
Я провел рефакторинг из «простого первого черновика» выше:
Это по-прежнему сложная проблема, и есть много других способов ее решения, но этот релиз — важный шаг в правильном направлении.
В первом наброске этой версии я добавилуменьшить функциюПотому что я предпочитаю использовать в кодефункциональное программирование
Помните: «Совершенство — враг хорошего» Это всего лишь ваш первый черновик, вы можете редактировать его снова! Это пошаговый процесс.
Я также предпочитал удобочитаемость производительности, так как использовал в каждом внутреннем цикле.some(). ЭтоO(n²)двухслойный цикл. Для небольших матриц массива это мало влияет на производительность, но такие операции могут стоить вам работы. В моей следующей рефакторинговой версии это тоже не будет важной оптимизацией.
Я решил, что прежде чем закончить «простой первый черновик», я использовал.map()Внесен ряд изменений:
Это «улучшенный первый набросок». я буду дваfor…ofИзмените цикл для использования один раз.reduce(),однажды.some(), и один раз.map(). Я предпочитаю этот стиль кодирования. Но, честно говоря, в моем первом наброске не было ничего «неправильного», потому что он работал, не так ли?
Сейчас хорошее время, чтобы сменить задачи по кодированию и решить снова просмотреть этот код завтра.
Реальные сценарии кодирования для применения
На практике мы часто сталкиваемся с запутанными спецификациями и необходимостью опаздывать, особенно при работе с новыми API. Каждый программист иногда задается вопросом: «Почему этот код не работает?»
Этот студент, которого я наставлял, перешел от неспособности осмыслить проблемы к легкому их решению, потому что он перешел от простыхfor…ofЦикл начинается. Благодаря «простому первому наброску» вместо трудностей и разочарований он почувствовал себя успешным и состоявшимся.
Если вы более опытны, естественно использовать.reduce()Чтобы решить проблему, осмелитесь попробовать! Но если вам нужно посмотреть синтаксис, посмотрите, не смотрите ли вы синтаксис и рефакторинг кода. Потому что вы всегда можете внести изменения в код на этапе написания кода.
Аналогичным образом, если вы используете JavaScript, вы можете добавить в returnпроверка типов. Это не требуется в качестве задачи по кодированию и может быть рассмотрено на следующий день.
В других сценах реального мира недостатки метода кодирования «простой первый черновик», с которыми вы часто будете сталкиватьсяgit commit: По крайней мере, при пошаговой разработке каждую версию первого черновика нужно отправлять часто. Возможно, вы представили три или четыре рабочие версии, прежде чем завершили первый черновик.
Если вы обнаружите проблему в последующей работе, вы будете благодарны за многие предыдущие коммиты, потому что вы можете найти проблему и найти решение на основе коммита.
Кроме того, количество коммитов кода может дать мне супер-мотивацию, особенно когда я работаю удаленно.
тестовое задание
В зависимости от ваших личных предпочтений в отношении тестирования вы можете написать тесты до написания кода. Просто следуйте тому же подходу: напишите максимально простые тесты, а затем рефакторинг тестового кода, как только он заработает.
Или, как и большинство программистов, вы можете предпочесть тестировать после того, как у вас есть работающий фрагмент кода — это тоже прекрасно, напишите несколько простых тестов после написания кода и рефакторинга его один или два раза, а затем рефакторинг тестового кода.
Самый быстрый способ, которым я знаю, чтобы написать код, это сделать именно следующее:
- написать простой код
- писать простые тесты
- Рефакторинг простого кода с помощью простых тестов
- Рефакторинг простых тестов
Лично я считаю, что сосредоточение внимания на «несовершенных первых черновиках» (или «простых первых черновиках», как я люблю говорить) заставляет меня с большей вероятностью писать тесты первыми, потому что мне все равно, идеальны ли тесты, которые я пишу.
Вы даже можете рассматривать тест как «второй черновик» своей работы, откладывая тестовое задание на завтра. Не забывайте тестировать, как если бы это было все для вас, вашего проекта и вашей компании.
В заключение
Независимо от того, новичок вы в кодировании, младший инженер или эксперт, если вы не сосредотачиваетесь на совершенстве, вы сможете написать больше кода быстрее. Начните с «простого первого черновика» и оставьте код, как только он будет запущен.
Получите опыт от технического писателя, который в прошлом году написал 100 000 текстов на JavaScript на 10 языках программирования — совет по написанию, который работает как для разработчиков, так и для писателей.
Мой реальный совет программистам всех уровней заключается в том, что ваш первый черновик должен быть повторяющимся и даже напоминать «хак». сначала забудьосновные принципы кодированияКак рекомендуется в этом посте (не повторяйтесь), придерживайтесь самых основных правил кодирования:
«KISS» (Будь проще, глупец!)
Как только вы это сделаете, вы сможете сделать свой код красивым, но если вам придется потратить часы времени на отладку, то весь рабочий день будет потрачен с пользой — даже не можете дать коду нормально работать.Поверь мне, я прошел через это!
И, если вы только изучаете новый язык программирования, средство разработки или кодовую базу, этот совет является обязательным и обязательным.
Удачного кодирования!
🌈 Сегодняшняя публикация статьи здесь. Если вам понравилась эта статья, пожалуйста, поставьте лайк,Star,Сфокусируйся наМеня (публичный аккаунт: фронтальное железо яйцо) 🎯
- Оригинальный адрес:Why You Should Make Your Code as Simple as Possible
- Оригинальный автор:Доктор Дерек Остин 🥳
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:NieZhuZhu
- Корректор:Yuxiao Alisa Shi,flashhu,lsvih