Рубрики
Без рубрики

Написание кода для людей

Zen JavaScript или почему ваш код должен быть так же легко читать как Гарри Поттер

Автор оригинала: Ilya Dorman.

Проблема: ваш мозг

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

Наиболее распространенные программисты ошибок делают, предполагают, что они пишут код для чтения машины. Хотя это технически, что это правда, это мышление ведет к адму, это код других людей.

Я работал в нескольких стартовых компаниях, некоторые из них даже считали «худой». В каждом из них потребовалось от нескольких недель до нескольких месяцев, чтобы полностью понять их кодовую базу, и у меня около 6 лет опыта работы с JavaScript. Это не кажется разумным для меня вообще.

Если код не легко читал, его структура уже является памятником – вы можете изменить мелочи, но серьезные изменения – вид каждый запуск претерпевает практически ежемесячную основу – так же весело, как корневой канал. Как только код достигнет состояния, что для профессионального программиста сложнее читать, чем эта статья – Doom и страданий на вас.

Почему код становится нечитаемым? Давайте сравним код на простой текст: чем дольше предложение, тем легче для нашего ума, чтобы забыть о начале этого, и как только мы достигнем конца, мы забываем то, что было начало и потерять значение всего предложения. Вы должны были прочитать предыдущее предложение дважды, потому что было слишком долго, чтобы получить в одном понимании? Точно! То же самое с кодом. Хуже того, на самом деле – логика кода может быть более сложным, чем любое предложение из книги или поста в блоге, и каждый программист имеет свою собственную логику, которая может быть полным гибберием к другому. Не говоря уже о том, что нам также нужно помнить логику. Иногда мы возвращаемся к нему в тот же день, а иногда после двух месяцев. Никто не помнит что-нибудь о своем коде, не глядя на него в течение двух месяцев.

Чтобы сделать код, читаемый к другим людям, мы полагаемся на три вещи:

1. Конвенции

Условные конвенции хорошие, но они очень ограничены: обеспечить их слишком мало, и программист в сочетании с кодом – никто никогда не поймет, что они имели в виду, как только они ушли. Обеспечьте слишком много, и у вас будут долгие дебаты по часам о каждом пространстве и толстой кишке (истинная история.) «Жилая зона» очень узкая и легко пропустить.

2. Комментарии

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

3. «Другие люди знают этот язык программирования столько, сколько я делаю, поэтому они должны понимать мои сочинения».

Ну … это JavaScript:

1_gkn1rhdecakktnfvax0w8q.png.

4. Тесты

1_q221zhj-s0gg9onagsdnmq.jpg.

Испытания – это маскировка дьявола. «Как мы уверены, что наш код хорош и читабелен? Мы пишем больше кода!» Я знаю, что многие из вас могут бросить этот пост прямо здесь, но несут со мной еще несколько линий: независимо от их выгоды, тесты являются еще одним слоем логики. Они больше кода будут читать и поняты. Тесты пытаются решить эту точную проблему: ваш код слишком сложен, чтобы рассчитать его результат в вашем мозге? Так вы говорите: «Ну, это то, что должно произойти в конце». И когда это не так, вы идете копать проблему. Ваш код должен быть достаточно простым, чтобы прочитать функцию или строку и понять, что должно быть результатом его запуска.

Ваша жизнь как программист может быть намного проще!

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

– сократить 80% функций вашего продукта

Да! Просто так. Простота, прежде всего, исходит из продукта. Сделайте это легко для людей понимать и использовать. Заставьте его сделать одно хорошо, и только затем добавляйте (если есть еще необходимость.) Используйте ничего, кроме чего вы абсолютно не должны включать одну строку кода (особенно из библиотек), что вы не на 100% Используйте и что это самое простое, самое простое решение доступно. Нужно простое приложение для чата и использовать Angular.js, потому что оно приятно с двусторонним привязкой? Вы заслуживаете тех часов и дней отладки и обсуждения услуг против провайдеров.

Side Примечание. API JavaScript Browser API – приводится в действие событиями, он сделан для ответа, когда происходит вещество (обычно ввод пользователя). Это означает, что события меняются данные. Многие новые рамки (угловые, метеорные) обратно в этот направление и делают изменения изменений данных спусковыми событиями. Если ваше приложение просто, вы можете жить счастливо с новым загадочным слоем, но если нет – вы получаете целый новый слой сложности, который вам нужно понять, и ваша жизнь будет в геометрической прогрессии. Если ваше приложение постоянно управляет большим количеством данных, избегайте этих рамки.

– Используйте простейшую возможную логику

Скажем, вам нужно показать разные HTML в разные случаи. Вы можете использовать маршрутизацию на стороне клиента с контроллерами, а данные, переданные каждому контроллеру, который отображается HTML из шаблона. Или вы можете просто использовать статические HTML-страницы с обычной навигацией браузера и обновите вручную HTML. Используйте второй.

– Сделайте короткие файлы JavaScript

Ограничьте длину файлов JS на одну страницу редактора и сделайте каждый файл сделать одно. Не может судорожить всю свою славу логику в маленькие модули? Хорошо, что означает, что у вас должен быть меньшего, чтобы другие люди поймут ваш код в разумное время.

– Избегайте предварительных компиляторов и задач бегунов

Чем больше слоев есть между тем, что вы пишете, и то, что вы видите, тем больше логика ваш разум должен помнить. Вы можете подумать, что Grunt или Gulp поможет вам упростить вещи, но тогда у вас есть 30 задач, которые вам нужно вспомнить, что они делают с вашим кодом, как их использовать, обновлять их и научить их любому новым кодедже. Не говоря уже о компиляции.

Набочная записка № 1: Предварительные компиляторы CSS в порядке, потому что у них очень мало логики, но они очень помогают с точки зрения читаемой структуры по сравнению с обычными CSS. Я едва использовал Pre-Compilers HTML, поэтому вам придется решить для себя.

Сторона ноты № 2: Task-runners может сэкономить ваше время, поэтому, если вы используете их, сделайте это мудро, сохраняя минималистичное мышление.

– Используйте JavaScript везде

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

– Напишите больше человеческого кода

Дайте свои нетривиальные переменные (и функции) описательные имена. Сделайте более короткие линии, но только если это не на компромисс.

Относитесь к вашему коду, как поэзии и возьмите его на край минимума голых.

1_fptp0i9cvwvzqjdruffhrq.jpg.