Один із простих способів покращити свої навички програмування

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

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

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

Читайте програми, що мають до вас відношення

Відмінним місцем для старту є якісь плагіни або бібліотеки, які ви вже використовуєте.

• Плагін WordPress, який вам дійсно подобається; • Ruby gem, який ви вважаєте корисним; • Плагін jQuery, до якого ви продовжуєте повертатися.

Усі вони – перші кандидати на вивчення. Ви вже знаєте їх загальнодоступні інтерфейси, тому бар'єр для розуміння їхньої внутрішньої роботи нижче. Крім того, у вас як користувача цієї програми є можливість додати документацію, впровадити нову функцію або взагалі зробити свій внесок у цей проект у якомусь вигляді.

Читайте програми, що вразили вас

Пам'ятаю, що коли я вперше переглядав сервіс створення презентацій 280 Slides, я подумав: «Так! Круто!». Я швидко з'ясував, що програма, яка керує цим сайтом, є проектом Cappuccino з відкритим кодом. Це знання увійшло глибоко в мою свідомість, і коли я якось натрапив на ще один вражаючий додаток,працював на Cappuccino, я вже знав, що на цьому проекті я зможу багато чого навчитися. Що справило сильне враження на вас останнім часом? Чи ця програма має відкритий вихідний код? Якщо так, то вона - відмінний вибір для читання: код, швидше за все, вразить вас так само, як і сам додаток.

Читайте програми, написані тими, кого ви поважаєте

Програмісти, гідні поваги

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

Читайте програми, які ви зможете дійсно досить глибоко зрозуміти

Якщо ви схильні ризикувати, можете розглянути занурення у великий проект, як, наприклад, Ruby на Rails, Drupal або jQuery. Але я запропонував би вам не використовувати поки що такі проекти, якщо ви, звичайно, не є досвідченим читачем програм.

Великі проекти мають надзвичайно багато взаємодіючих частин, і ви, зрештою, витратите чимало часу та сил на освоєння загальних уявлень, щоб дізнатися про щось конкретне. Заплутаність предмета вивчення розхолоджує, і великі проекти, швидше за все, призведуть до вашого розчарування під час читання. Перевагою вибору невеликого проекту для читання є те, що ви можете тримати всю логіку роботи програми у вашій голові. Це дозволяє працювати тільки з деталями, щоб отримати якісь уроки.

Вивчіть загальну картину

покращити

Структура каталогу twitter gem

Я припускаю, що ви принаймні знаєте на макрорівні, що робить код, який ви читаєте. Якщо ні, то пропоную прочитати веб-сайт проекту,навчальні посібники, документацію та все інше, що ви можете дістати крім коду.

Після того, як належну ясність внесено, вашим першим кроком має бути розгляд структури проекту. Обсяг цієї роботи залежить від розміру обраної бази вихідного коду, але навіть якщо вона займає більше одного файлу, це вимагатиме лише трохи більше часу.

Ціль цього кроку полягає просто в ознайомленні з джерелом. Розберіться, які файли включають / викликають / завантажують інші файли, де знаходиться основна частина коду, які простори імен використовуються (якщо такі є) та інше такого роду. Отримавши загальне уявлення, можна поринати в деталі.

Документуйте ваші результати

Використовуй тести, Люку

Сподіватимемося, що проект, який ви обрали, має набір тестів. Якщо ні, то можете пропустити цей розділ взагалі (або знайти проект, який має такий набір).

Тести є відмінним місцем для читання чужого коду, тому що вони документують те, що програма повинна виконати. Одні тести більш інформативні, ніж інші, але незалежно від того, наскільки добре вони написані, часто знайти наміри програміста в тестах набагато легше, ніж у реалізації. Під час читання спробуйте отримати успішний результат при прогоні всього набору тестів. Це дозволить переконатися, що ваше середовище налаштовано правильно, і зробить вас більш впевненим при внесенні змін.

Змініть код, скомпілюйте

Хто сказав, що читання коду має бути пасивним? Ви почнете дійсно розуміти код, тільки після того, як зламаєте все і знову зберете разом. Згадайте пройдені випробування? Зробіть так, щоб вони завершилися невдало, додайте дещо або спробуйте змінити реалізацію так, щоб вони пройшлинормально. Спробуйте додати якусь невелику "фічу", яка вам здається "крутою", або налаштуйте реєстрацію по всьому проекту так, щоб можна було роздрукувати висновок на різних етапах виконання програми. Це, як і раніше, читання? Абсолютно, але такий підхід є більшою власною пригодою, ніж читанням детективного роману. І це саме те, що треба!

Змити та повторити

(Прим. перекладача: з анекдоту про айтішника, що миється шампунем строго за інструкцією - нескінченно)

Закінчивши з читанням однієї кодової бази, візьміть іншу та почніть процес знову. Чим більше кодів ви читаєте, тим краще це читання і тим більше ви отримуєте з нього за менший час. Я думаю, ви знайдете, що ваш ККД росте досить швидко і що це дійсно дуже приємний спосіб навчання.

Де почати

А ви використовуєте читання коду як навчальний інструмент? Які проекти ви порадили б колегам? Чи прочитали якусь гарну програму останнім часом?