Как да изберете най-добрите конвенции за кода за вас и вашия екип

Сложете край на безкрайния дебат

- „Слушай, тези частни променливи трябва да следват публичните!“

- "Няма начин! Публичните променливи отиват преди private! "

- „Нека попитаме Деб и нека тя реши“

- „Чакай, защо тези константи не са в камила?“

? ‍♂? ‍♀

Вдигнете ръката си, ако и преди сте се оказвали в този вид дискусия. Добре, не го повдигайте, но нещо ми подсказва, че някои от вас може да са участвали в този сценарий веднъж или два пъти.

Като разработчик през последното десетилетие се озовах в немалко, някои биха могли да кажат твърде много дискусии относно конвенциите на кода. Тези дискусии, колкото и да са полезни, понякога се влошават до безкрайни философски размирици. И тогава те започват да преминават към теми, вариращи от отстъп до структура на папките.

Може да е болезнено.

И така, как наистина решавате коя е най-добрата конвенция и още по-добре, съществуват ли най-добрите конвенции? Ще го изложа тук, за да можете веднъж завинаги да оставите тези философски размирици за почивка.

И така, защо изобщо се нуждаем от конвенции?

За да определим коя е най-добрата конвенция и дали изобщо съществуват, първо трябва да разберем защо изобщо се нуждаем от конвенции.

Има повече от няколко причини, но ще се спра на най-важната: четливостта .

Ами ако реша да премина към писане само с главни букви. ХАЙ ТОЗИ, КОЙТО МОЖЕ ДА СИ СТРАХНЕ. Веднага го забелязвате и мозъкът ви започва да обработва различното.

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

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

За да си сътрудничите с други разработчици ефективно и качествено, трябва да имате обща конвенция.

„Програмите трябва да бъдат написани, за да могат хората да четат, и само случайно, за да могат машините да се изпълняват.“ - Хал Абелсън

Как да изберем най-добрата конвенция на кода

Независимо дали току-що сте започнали да кодирате, или сте част от екип за разработчици на kickass, или ако току-що сте станал технически директор, как да изберете избора на кодови правила?

Ето моето ръководство за избор на най-добрата конвенция на кода:

  1. Вземете вдъхновение от разработчиците, на които се възхищавате: Нищо не може да надмине опита и някои от най-големите и най-умните компании публикуват своите указания за кодиране. Например Airbnb публикува своите ръководства за стил на javascript и рубин, а Google публикува свои собствени ръководства за стил Java и Python. Независимо дали харесвате тези компании или не, ако обобщите годишния опит, който всеки от техните разработчици има, това възлиза на милиони. Опитайте се да приложите някои от ръководствата за стил на тези компании към вашия собствен екип.
  2. Краудсорсинг знания от вашите връстници: Щастливи сме, че сме част от такава динамична общност. Всъщност едно от най-големите предимства да бъдеш разработчик днес е нашата общност. Независимо дали става въпрос за Slack, Spectrum, Discord или друга платформа за колабиране, винаги можете да намерите информирани групи, които да публикуват незабавно въпрос за конвенциите на кода и да получат отговори от разработчиците по целия свят.
  3. Игнорирайте пробите на кода. Да, просто ги игнорирайте. От време на време се натъквам на код, който е копиран / поставен от отговор на Stackoverflow или нещо подобно. Това, което хората понякога забравят, е, че примерните кодове, които току-що са копирали, вероятно са написани като отговор на технически въпрос или като обяснение за някаква библиотека. В повечето случаи писателят не е имал предвид, нито е имал време да се занимава с конвенции за кодове.

Тези съвети трябва да ви помогнат да започнете и могат да поставят основите за въвеждане на кодови конвенции за вашия екип за разработчици.

А сега за някаква философия.

Съществуват ли изобщо „най-добрите“ конвенции?

Това зависи от това какво означава „най-доброто“. Ако Airbnb или Google използват определена конвенция или ако 10 различни технически директори са ви казали, че тяхната конвенция е най-добрата - това означава ли, че това е най-добрата конвенция за вас?

Освен това конвенциите подлежат на промяна. Може ли нещо, което се променя с течение на времето, да бъде определено като „най-доброто“?

Когато започнах в Lemonade като единствен фронт разработчик, ми беше трудно да прочета кода, написан от предишния разработчик. Може би това беше най-добрата конвенция за него, но не беше за мен. Така че пренаписах всяка част от кода, върху която съм работил, използвайки моите конвенции. С течение на времето повече разработчици се присъединиха към екипа и нашите конвенции се развиха.

Всеки разработчик идва от различен произход, с различни стандарти и конвенции. За да формализираме нашите конвенции, използвахме ръководството за стил на Javascript на Airbnb като отправна точка. Прегледахме конвенциите в това ръководство и променихме или премахнахме тези, с които не се съгласихме, и приехме тези, които ни харесаха. Ние дори приехме конвенции, разработени от собствения им опит, и ги интегрирахме в нашата основна конвенция.

Процесът на оценка на всяка конвенция и решаване дали да я приемем не само подобри четливостта на нашия код, но и подобри работата ни в екип. (Повече за това в следваща публикация!)

Ето твърдата истина: няма универсално определение за най-добрите конвенции, защото те просто не съществуват.

За разлика от това, което са ви учили в училище, не винаги има един верен отговор на всеки въпрос. В този случай може да има много от тях.

Разработчиците имат различни начини да внедрят различни или дори едни и същи неща. Някои от нас предпочитат имената на всички членове на класа да започват с префикс 'm_'. Някои от нас обичат да използват две отстъпи, други предпочитат раздели, други може да кажат, че използването на думата Utilsв името на класа е погрешно. Боже, това е безкрайна дискусия, но всички тези предпочитания идват с добри аргументи.

В крайна сметка всичко се свежда до това кое споразумение подобрява четливостта на вашия код. Кой позволява на вашия екип да общува по-добре, да се придвижва напред по-бързо и с по-добра ефективност.

Не забравяйте, че конвенциите на кода са просто предложения. Да, след като решите да използвате конвенция, трябва да я изпълните. Но помнете: те не са издълбани в камък и подлежат на промяна. Позволете си да експериментирате с различни конвенции, докато намерите най-добрия, който подхожда на вас и вашия екип.

И така, кои са най-добрите конвенции за код? Лесно - ваше!