Я початківець програмний інженер (зараз студент, спеціаліст з CS) і дуже намагаюся розуміти програми інших людей. Я хочу знати, чи може ця навичка (або її відсутність) бути для мене гандикапом, і якщо так, то як я можу її розвинути?
Я початківець програмний інженер (зараз студент, спеціаліст з CS) і дуже намагаюся розуміти програми інших людей. Я хочу знати, чи може ця навичка (або її відсутність) бути для мене гандикапом, і якщо так, то як я можу її розвинути?
Відповіді:
Те, як ви її розробляєте - це написання власного коду (багато його), і так, спроба через читання коду інших людей.
Проблема, звичайно, полягає в тому, що не всі думають так, як ви. Я був давно в класі Java на першому курсі, і нам дали завдання. Всупереч тому, що я вважав (а саме те, що відповіді збігаються на трьох-чотирьох загальних рішеннях), кожен у класі мав унікальне рішення завдання.
Звідси випливає, що вам слід читати хороший код.
Це одна з причин того, що шаблони дизайну стали настільки популярними, і чому ви повинні вивчати їх. Шаблони дизайну містять загальну лексику для спілкування програмістів та налаштовують свій розум на "кращі" способи вирішення обчислювальних проблем.
Ви також повинні вивчити алгоритми та структури даних.
Висновок: Ви завжди повинні прагнути писати код, який інші розробники можуть легко зрозуміти.
Це дуже важливо.
Після закінчення навчання та виходу у світ більшість проектів, над якими ви будете працювати, вже матимуть код, внесений іншими. Пощастило - програміст, котрий отримує витратити весь свій час на greenfield проекти!
Це навик , який отримується через практику і терпіння, і в багатьох випадках, це навик , який багато людей не отримують багато можливостей для роботи на до після того, як вони закінчать навчання і отримати ту першу роботу. Розслабтесь!
(хоча якщо у вашій школі є програма кооперативу, це дасть вам досвід перед закінченням роботи над великими проектами, які в основному написані іншими людьми. І це отримає вам академічні кредити! Щось вивчити, якщо вона доступна)
Це головний навик , залежно від специфіки, де ви працюєте, це може бути навіть важливішим, ніж написання самого коду.
Як і інші навички, практика робить ідеальною! Спробуйте прочитати код іншого програміста, налагоджуйте його і що мені особисто допомагає, це переробляти або покращувати невеликі шматочки коду та розширювати звідти.
Існують чіткі навички як читання, так і написання коду.
Щодо читання проти письма. Так, читання є важливим.
Кілька сентенцій, які допомагають багатьом із нас, є:
ДОБРЕ. Так що це все чудово. Тепер перейдемо до того, що ви, мабуть, переживаєте.
omg, ця чудернацька величезна база коду з десятками тисяч рядків вихідного коду та класів, що мають сотні рядків із шаленими залежностями, і кожен раз, коли я намагаюся дотримуватися чогось, я повинен тримати 10 рівнів у голові, тощо, тощо.
Звук знайомий ? Так. Глибокий вдих. Розслабтесь. Це нормально. Це з чого виготовлені виробничі системи. Люди виживають (і процвітають) у цих, здавалося б, незрозумілих ситуаціях, оскільки:
Більшість цих відповідей зосереджені на важливості читання коду для самовдосконалення. Я від усієї думки погоджуюсь із цим і схвалюю.
Існує ще один кут, на який слід остерігатися - навіть якщо ви були блудником, який не міг отримати користь від читання інших підходів (неможливо, але заради аргументу ....), вам все одно потрібно знати, як читати код через Концепція, яка в принципі не існує в університетських умовах: переважна більшість галузевих проектів - це коричневі проекти (тобто, або входять у інтегровану базу коду, або інтегруються до неї).
Необхідність читати код просто для розуміння існуючої бази коду та процесів реальна. Завжди можна задати іншим розробникам питання щодо коду, але це може зайняти у вас стільки часу. Люди залишають, перемикають проекти, або час просто проходить. Деталі низького рівня зникають у пам'яті та програмісти технічного обслуговування застосовують виправлення. У якийсь момент немає єдиного джерела істини, крім самого коду.
Гарна гігієна коду, посібники зі стилів, огляди коду та документація допомагають, але в якийсь момент код є джерелом істини для того, що відбувається, і єдиним способом знайти відповідь буде піти розшукати його самостійно. Окрім його використання в саморозвитку, вміння читати код - це явно окрема майстерність від його написання.
Розуміння чужого коду - це те, чого ви не можете уникнути, оскільки ви, швидше за все, будете працювати в команді, навіть якщо не в команді, ви будете гуглювати різні речі, і вам доведеться зрозуміти зразок коду. Так що так, це обов'язково.
Я відчуваю, що кожен відчуває, що це відчуття може бути дещо менше, ніж інші, особливо на початку, ти розумієш свій код краще, ніж інші, оскільки витрачаєш набагато більше часу на свій власний код, ніж чийсь інший код, оскільки ти не тільки читаєш, але пишеш і структуруєш це у вашому розумі. Якщо ви почнете витрачати більше часу на код іншого та спершу спробуєте побачити, яка структура / потік використовується, це, безумовно, допоможе вам краще зрозуміти код.
Щоб зробити мою думку ще більш переконливою, якщо у вас є якийсь код, який ви написали рік назад, спробуйте його зрозуміти ще раз, і я можу точно сказати, що вам знадобиться більше часу, але менше, ніж код іншого, оскільки ви маєте уявлення про те, як ви структуруєте свій код.
Сподіваюся, ця допомога, не розчаруйтесь, це абсолютно нормально. Приділіть більше часу коду, і ви зрештою його отримаєте.
Ну, мені щойно дали проект із близько 100 000 рядків коду, написаних командою в іншій країні, і мені доведеться внести кілька дуже значних змін у копію їх коду протягом наступних місяців, залишаючи стільки коду як можна спільніше.
Ви кажете мені, як я можу швидко виконувати свою роботу без вміння читати код інших людей. Якщо ви не можете прочитати чужий код, ви повністю, повністю застрягли.